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

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

作者: 共鸣世纪 | 来源:发表于2018-12-19 15:58 被阅读0次

百度熊掌号出现已经很久了;简单来说,网站接入熊掌号后,熊掌号可以自动实时收录网站最新内容,并同步发布到百度熊掌号,用户通过搜索访问熊掌号中收录的文章,会自动跳转到自己网站对应的文章;熊掌号承诺网站新增内容/文章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,说明新文章主动推送正常。

相关文章

网友评论

      本文标题:纯代码实现WordPress网站接入百度熊掌号

      本文链接:https://www.haomeiwen.com/subject/skmjkqtx.html