联合创作人招募中!
微信联系:yulone

WordPress网站针对百度熊掌号的改造教程

虽然我们都不喜欢百度,但是为了让国内的朋友能够更方便的了解到我们,我们还是不得不根据百度的要求对网站做一些改造。特别是一些新的站点,通过建立百度熊掌号,可以提高自己被收录的机会。这篇文章就是来教各位一下WordPress站点针对百度熊掌号的改造方法。(如果不知道怎么申请熊掌号的话请自行搜索,本文不做讨论)

熊掌号

熊掌号

首先百度熊掌号的改造主要有两个部分:粉丝关注、结构化改造。

而粉丝关注改造我并没有设置,一是因为这样等于在自己的网站页面上给百度引流,二是因为我也不想要访客在访问的时候看到突兀的东西。

如果你想要自己的网站有百度熊掌号的关注按钮,那么可以按照熊掌号后台的指导进行设置,无非就是在</head>前面加一个百度熊掌号ID声明,代码如下。然后再在页面内要展示关注按钮的位置加上关注代码即可。(如果有不会的可以在评论区留言,注意这个不是结构化改造必须的,但是在百度熊掌号后台校验的话是需要这个代码才行)

<script src="//msite.baidu.com/sdk/c.js?appid=这边写你的熊掌号ID"></script>

下面我们来说说结构化改造。结构化改造其实很简单,针对WordPress的改造主要是一些函数的调用方法,知道的话使用起来其实非常方便。

首先需要添加 canonical 标签,这个标签的作用是确定每个页面的唯一url,现在的WordPress都是自带这个标签,所以我们不需要二次添加如下的代码,你只需要在网站页面源码内能发现这个标签,并且显示正常即可。

<link rel="canonical" href="http(s)://xxx"/>

我们先看以下代码,这个便是百度要求针对所有(文章)页面进行的JSON_LD改造,我们只需要把这段代码放到主题的 footer.php 中即可(或放到文章内容的后面):

<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 iyu_excerpt()?>",
	"pubDate": "<?php echo get_the_time('Y-m-d\TH:i:s')?>",
	"upDate": "<?php echo the_modified_time('Y-m-d\TH:i:s'); ?>"
}</script>

我们利用WordPress的一些调用函数轻松的调用到了规范JSON_LD所需的内容。细心的朋友会发现针对描述这一字段,我调用了一个自定义函数 iyu_excerpt(),而这个函数就需要我们在主题的 functions.php 中添加,代码如下:

//针对文章及页面获取摘要
function iyu_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);
	}
}

这边我们的逻辑是:如果文章填写了“摘要”,那么 description 则抓取“摘要”内容,如果没有设置文章摘要将会自动截取文章第一段的指定长度作为摘要,其中长度我们在第一行进行了设置:$len=220,大家可以根据自己的需要进行调整

至此针对百度熊掌号的WordPress改造已经全部完成。

更新:我们参考了泪雪博客的方法,也在这边添加一下,供需要的朋友参考。

功能:创建两个函数,一个抓取文章摘要,另一个根据文章内容抓取图片。

修改1:添加函数到主题的 functions.php

//获取文章/页面摘要
function iyu_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 iyu_post_imgs(){
	global $post;
	$src = '';
	$content = $post->post_content;  
	preg_match_all('/<img .*?src=[\"|\'](.+?)[\"|\'].*?>/', $content, $strResult, PREG_PATTERN_ORDER);  
	$n = count($strResult[1]);  
	if($n >= 3){
		$src = $strResult[1][0].'","'.$strResult[1][1].'","'.$strResult[1][2];
	}elseif($n >= 1){
		$src = $strResult[1][0];
	}
	return $src;
}

修改2:添加函数到主题的 header.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": ["'.iyu_post_imgs().'"],
	"description": "'.iyu_excerpt().'",
	"pubDate": "'.get_the_time('Y-m-d\TH:i:s').'",
        "upDate":"'.get_the_modified_time('Y-m-d\TH:i:s').'"
}</script>
';}
?>

如果有问题的话可以在评论区留言哦。

爱鱼客著作权所有!未经允许不得转载:爱鱼客 » WordPress网站针对百度熊掌号的改造教程

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址