纯代码实现WordPress网站接入百度熊掌号
百度熊掌号出现已经很久了;简单来说,网站接入熊掌号后,熊掌号可以自动实时收录网站最新内容,并同步发布到百度熊掌号,用户通过搜索访问熊掌号中收录的文章,会自动跳转到自己网站对应的文章;熊掌号承诺网站新增内容/文章24小时内收录并展现。当然百度熊掌号收录后就相当于百度搜索引擎也收录了,这对于寻求网站内容快速收录的站点来说是一大福音。
因为熊掌号主要还是针对移动端用户在百度中搜索网站和网站展现,而我的网站大部分流量都在PC端,所以我的博客就一直没有接入;近期有位同学找我帮他的WordPress网站接入熊掌号,下面就记录一下如何纯代码实现WordPress网站无缝接入熊掌号:
1、接入前提:先注册熊掌号,并绑定自己的网站到熊掌号(这个方法就不写了,网上一大堆),并且保证自己的网站是自适应网站或有独立移动端的网站。
2、获取熊掌号Appid
进入熊掌号管理界面,点击“我的功能”--“资源提交”,会跳转到内容提交页面,点击“API提交”,在下面显示的接口调用地址后面就有appid,是一串数字,先记录下来等下会用到。
3、WordPress进行H5页面结构化改造
因为百度熊掌号主要是展现在移动端,所以必须对网站先进行页面结构改造,使熊掌号能检测到你的网站符合熊掌号的格式要求,好了,废话不多,开始干。
给wordpress添加百度熊掌号所需要的JSON_LD数据,编辑主题的functions.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);
}
}
//获取文章中的图片作为熊掌号收录后展现的缩略图,如果图片数大于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
<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步那个接口调用地址,一长串全是。
//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、在线校验页面改造
在百度熊掌号管理界面粉丝关注选项中,有个在线校验工具,随便输入一篇自己的文章网址,然后查看文章的源代码,把所有源代码复制到下面,进行校验检查,如果结果显示校验成功说明页面改造正确,如果不成功,那根据提示排错,也可以把错误贴到本文评论,我会一一回复。
6、校验新文章主动推送至熊掌号是否生效
随便写一篇新文章进行发布,发布后到熊掌号内容提交页面查看收录剩余条数,如果剩余数减1,说明新文章主动推送正常。