首页 » WordPress » 纯代码实现WordPress网站接入百度熊掌号

纯代码实现WordPress网站接入百度熊掌号

 

百度熊掌号出现已经很久了;简单来说,网站接入熊掌号后,熊掌号可以自动实时收录网站最新内容,并同步发布到百度熊掌号,用户通过搜索访问熊掌号中收录的文章,会自动跳转到自己网站对应的文章;熊掌号承诺网站新增内容/文章24小时内收录并展现。当然百度熊掌号收录后就相当于百度搜索引擎也收录了,这对于寻求网站内容快速收录的站点来说是一大福音。

因为熊掌号主要还是针对移动端用户在百度中搜索网站和网站展现,而我的网站大部分流量都在PC端,所以我的博客就一直没有接入;近期有位同学找我帮他的WordPress网站接入熊掌号,下面就记录一下如何纯代码实现WordPress网站无缝接入熊掌号:

1、接入前提:先注册熊掌号,并绑定自己的网站到熊掌号(这个方法就不写了,网上一大堆),并且保证自己的网站是自适应网站或有独立移动端的网站。

2、获取熊掌号Appid

进入熊掌号管理界面,点击“我的功能”--“资源提交”,会跳转到内容提交页面,点击“API提交”,在下面显示的接口调用地址后面就有appid,是一串数字,先记录下来等下会用到。
20181129161124

3、WordPress进行H5页面结构化改造

因为百度熊掌号主要是展现在移动端,所以必须对网站先进行页面结构改造,使熊掌号能检测到你的网站符合熊掌号的格式要求,好了,废话不多,开始干。

给wordpress添加百度熊掌号所需要的JSON_LD数据,编辑主题的functions.php函数文件,添加下面两段代码到末尾:

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
//获取文章和页面的摘要
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);
    }
}
 
 
//获取文章中的图片作为熊掌号收录后展现的缩略图,如果图片数大于3张则显示3张缩略图,否则显示1张
function fanly_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;
}

编辑主题页眉文件header.php,并添加下面代码至</head>标签前面。

注意:需要把代码中两处appid后面的值都替换为自己的熊掌号appid,就是第2步获取到的appid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script src="//msite.baidu.com/sdk/c.js?appid=这里请填写熊掌号ID"></script>
<?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的H5页面改造就完成了,接下来就需要让Wordpress网站发布的新文章主动提交推送至熊掌号,继续干...

4、纯代码实现WordPress发布文章主动提交推送至百度熊掌号

还是编辑主题的functions.php函数文件,增加下面代码到末尾

注:必须修改代码中$api后面的值为自己熊掌号的接口调用地址,就第2步那个接口调用地址,一长串全是。

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
//WordPress发布文章主动推送到百度熊掌号
if(!function_exists('Baidu_Submit')){
   function Baidu_Submit($post_ID) {
 
	if(get_post_meta($post_ID,'Baidusubmit',true) == 1) return;
 
	$urls = array( get_permalink($post_ID) ); 
	$api = 'http://data.zz.baidu.com/urls?appid=1583425771047521&token=FDelJuTRRgY0kAPL&type=realtime';
	$ch = curl_init();
	$options = array(
	CURLOPT_URL => $api,
	CURLOPT_POST => true,
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_POSTFIELDS => implode("\n", $urls),
	CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
	);
	curl_setopt_array($ch, $options);
 
	$result = json_decode(curl_exec($ch),true); 
 
	if (array_key_exists('success_realtime',$result)) {
	add_post_meta($post_ID, 'Baidusubmit', 1, true);
	}
	}
	add_action('publish_post', 'Baidu_Submit', 0); 
}

好了,到此活已经干完了,怎么测试上述修改是否生效呢?很简单了,下面根据我的方法来测试一下:

5、在线校验页面改造

在百度熊掌号管理界面粉丝关注选项中,有个在线校验工具,随便输入一篇自己的文章网址,然后查看文章的源代码,把所有源代码复制到下面,进行校验检查,如果结果显示校验成功说明页面改造正确,如果不成功,那根据提示排错,也可以把错误贴到本文评论,我会一一回复。
20181129163715

6、校验新文章主动推送至熊掌号是否生效

随便写一篇新文章进行发布,发布后到熊掌号内容提交页面查看收录剩余条数,如果剩余数减1,说明新文章主动推送正常。
20181129171803

原文链接:纯代码实现WordPress网站接入百度熊掌号,转载请注明来源!

2