D&G`s BloG V3.0.0

2018,再出发!

【网站技术 WordPress】 接入百度“熊掌号”,结构化数据实现代码。

东哥的博客接入百度熊掌号(原百度官方号)已经有一段时间了,虽然目前暂时还无法统计实际的效果,不过但从百度站长平台熊掌号的数据分析中来看还是不错的,前面也已经分享过“WordPress百度熊掌号快速开发改造教程”,今天就把其中关于熊掌号接入Json_LD数据的代码分享出来给大家。
《【网站技术 WordPress】 接入百度“熊掌号”,结构化数据实现代码。》
首先来分享一个最简单的一段Json_LD数据代码:

<?php
//获取文章/页面摘要
function fanly_excerpt($len=220){
	if ( is_single() || is_page() ){
		global $post;
		if ($post->post_excerpt) {
			$excerpt  = $post->post_excerpt;
		} else {
			if(preg_match('/<p>(.*)<\/p>/iU',trim(strip_tags($post->post_content,"<p>")),$result)){
				$post_content = $result['1'];
			} else {
				$post_content_r = explode("\n",trim(strip_tags($post->post_content)));
				$post_content = $post_content_r['0'];
			}
			$excerpt = preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,0}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s','$1',$post_content);
		}
		return str_replace(array("\r\n", "\r", "\n"), "", $excerpt);
	}
}
?>
<script type="application/ld+json">{
	"@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
	"@id": "<?php the_permalink(); ?>",
 	"appid": "这里请填写熊掌号ID",
	"title": "<?php the_title(); ?>",
	"images": ["<?php echo catch_that_image() ?>"],
	"description": "<?php echo fanly_excerpt()?>",
	"pubDate": "<?php echo get_the_time('Y-m-d\TH:i:s')?>",
}</script>

其中自定义了一个文章或页面的摘要函数,如果没有设置文章摘要将会自动截取文章第一段的指定长度作为摘要。
下面我们就继续来加强这段代码,百度熊掌号在Json_LD数据里面是支持单张缩略图和三张缩略图的样式,就直接在完整的一个推荐代码中给大家贴出来吧!

WordPress百度熊掌号Json_LD数据完整代码

//获取文章/页面摘要
function fanly_excerpt($len=220){
	if ( is_single() || is_page() ){
		global $post;
		if ($post->post_excerpt) {
			$excerpt  = $post->post_excerpt;
		} else {
			if(preg_match('/<p>(.*)<\/p>/iU',trim(strip_tags($post->post_content,"<p>")),$result)){
				$post_content = $result['1'];
			} else {
				$post_content_r = explode("\n",trim(strip_tags($post->post_content)));
				$post_content = $post_content_r['0'];
			}
			$excerpt = preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,0}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s','$1',$post_content);
		}
		return str_replace(array("\r\n", "\r", "\n"), "", $excerpt);
	}
}
//优先获取文章中的三张图,否则依次获取自定义图片/特色缩略图/文章首图
function fanly_post_imgs(){
	global $post;
	$content = $post->post_content;  
	preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $content, $strResult, PREG_PATTERN_ORDER);  
	$n = count($strResult[1]);  
	if($n >= 3){
		$src = $strResult[1][0].'","'.$strResult[1][1].'","'.$strResult[1][2];
	}else{
		if( $values = get_post_custom_values("thumb") ) {	//输出自定义域图片地址
			$values = get_post_custom_values("thumb");
			$src = $values [0];
		} elseif( has_post_thumbnail() ){	//如果有特色缩略图,则输出缩略图地址
			$thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'full');
			$src = $thumbnail_src [0];
		} else {	//文章中获取
			if($n > 0){ // 提取首图
				$src = $strResult[1][0];
			} 
		}
	}
	return $src;
}

建议大家把以上两段代码添加到你需要接入熊掌号的主题的functions.php中,然后继续:

<?php
if(is_single()){
	echo '<script type="application/ld+json">{
	"@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
	"@id": "'.get_the_permalink().'",
 	"appid": "这里请填写熊掌号ID",
	"title": "'.get_the_title().'",
	"images": ["'.fanly_post_imgs().'"],
	"description": "'.fanly_excerpt().'",
	"pubDate": "'.get_the_time('Y-m-d\TH:i:s').'"
}</script>
';}
?>

最后大家就可以把以上这段代码添加在你的WordPress主题的header.php的合适的位置,以上代码还做了一个if判断,只让该段代码在文章中输出。

写在最后

关于WordPress接入百度熊掌号的Json_LD数据代码改造就给大家分享到这里了吧,最后如果大家的WordPress站点成功接入熊掌号,不妨试试《WordPress百度熊掌号数据提交插件》,这个插件或许能够助力你更快的实现官方好数据提交和原创推送。

点赞