WordPress接入百度官方号,Json_LD数据实现代码

张子凡 WordPress建站 2017-08-30 17:52:30 阅读(4739) 评论(2)

泪雪博客接入百度官方号已经有一段时间了,虽然目前暂时还无法统计实际的效果,不过但从百度站长平台官方号的数据分析中来看还是不错的,前面也已经分享过“WordPress百度官方号快速开发改造教程”,今天就把其中关于官方号接入Json_LD数据的代码分享出来给大家。

WordPress百度官方号Json_LD数据

首先来分享一个最简单的一段Json_LD数据代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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);
	}
}
?>
1
2
3
4
5
6
7
8
<script type="application/ld+json">{
	"@context": "https://zhanzhang.baidu.com/contexts/cambrian.jsonld",
	"@id": "<?php the_permalink(); ?>",
	"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>

其中子凡自定义了一个文章或页面的摘要函数,如果没有设置文章摘要将会自动截取文章第一段的指定长度作为摘要。如果你仔细的看过子凡前面的WordPress百度官方号快速开发改造教程,你会发现上面的Json_LD数据中少了一个原创字段,因为这里涉及到了WordPress文章自定义字段,否则这个也就没有意义了,所以上面就没有列举。

下面我们就继续来加强这段代码,百度官方号在Json_LD数据里面是支持单张缩略图和三张缩略图的样式,当然对于子凡这种力求极致的人来说,不完善这个可能晚上都不能好好睡觉的人必须做到,子凡就直接在完整的一个推荐代码中给大家贴出来吧。

WordPress百度官方号Json_LD数据完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//获取文章/页面摘要
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中,然后继续:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if(is_single()){
	$original = get_post_meta(get_the_ID(),'original',true) ? ',"isOriginal": "1"' : '';
	echo '<script type="application/ld+json">{
	"@context": "https://zhanzhang.baidu.com/contexts/cambrian.jsonld",
	"@id": "'.get_the_permalink().'",
	"title": "'.get_the_title().'",
	"images": ["'.fanly_post_imgs().'"],
	"description": "'.fanly_excerpt().'",
	"pubDate": "'.get_the_time('Y-m-d\TH:i:s').'"
	'.$original.'
}</script>
';}
?>

最后大家就可以把以上这段代码添加在你的WordPress主题的header.php的合适的位置,以上代码子凡还做了一个if判断,只让该段代码在文章中输出,同时也做了一个拓展,添加了对文章original自定义字段的判断,以此来判断原创文章,同时大家也可以手动在文章编辑的时候添加自定义字段,字段名为:original,值为:1,就可以了,如果没有设置这个字段将不会显示。

写在最后

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

除非注明,否则均为泪雪博客原创文章,转载请以链接形式标明本文地址

本文链接:https://zhangzifan.com/wordpress-json-ld.html

发表评论

  1. 站盟网
    1楼
    站盟网 1个月前 (09-12)

    第四个代码处掉了一个逗号。
    “pubDate”: “‘.get_the_time(‘Y-m-d\TH:i:s’).'”

    • 张子凡
      回复
      张子凡 1个月前 (09-12)
      回复 @站盟网 :这个不是掉了,是放在最后一个项目的前面了而已