WordPress接入熊掌号及页面改造+自动提交

目录 文章

最近发现站点接入熊掌号确实会给百度收录带来明显效果,故此给一个美股开户站点接入了这个功能,在此作一下记录!

接入熊掌号

添加熊掌号ID声明和canonical标签,以及添加百度要求的代码JSON_LD数据。代码直接添加到标签前,一般在header.php文件。

<!--熊掌号-->
<script src="//msite.baidu.com/sdk/c.js?appid=1604709458498238"></script>
<?php
global $wp;
$current_url = home_url(add_query_arg(array(),$wp->request));if($current_url)echo '<link rel="canonical" href="' .$current_url. '" />' . "\n" ;?>
<?php
if(is_single()){
	echo '<script type="application/ld+json">{
	"@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
	"@id": "'.get_the_permalink().'",
 	"appid": "1604709458498238",
	"title": "'.get_the_title().'",
	"images": ["'.fanly_post_imgs().'"],
	"description": "'.fanly_excerpt().'",
	"pubDate": "'.get_the_time('Y-m-d\TH:i:s').'"
}</script>
';}
?>
<!--END-->

*注:需要把appid替换成自己站点的。

添加熊掌号页面改造

这段代码添加到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);
	}
}
 
//优先获取文章中的三张图,否则依次获取自定义图片/特色缩略图/文章首图 last update 2017/11/23
function fanly_post_imgs(){
	global $post;
	$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];
	}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;
}
//END

添加关注功能代码

关注功能代码百度提供有3种,我们随便选一种就可以了。一般是添加在single.php里想要展示的位置。

吸顶bar

<script>cambrian.render('head')</script>

文章段落间bar

<script>cambrian.render('body')</script>

底部bar

<script>cambrian.render('tail')</script>

*注意:上述三种bar在样式上没有预留左右边距,若页面自身没有设置边距,建议按照如下方法使用。 其中padding-left、padding-right为边距属性,可按需修改。

而我比较喜欢文章段落间bar,如美股开户网接入后的效果。

所以代码是这样添加的:

<div style="padding-left: 17px; padding-right: 17px;">
    <script>cambrian.render('body')</script>
</div>

上述所有步骤完成就算成功接入熊掌号及页面改造了。但是每次发布文章的时候是不会自动提交给熊掌号的,所以还需要添加自动提交代码。

添加自动提交功能

把下面的代码也是添加到functions.php文件里,添加的时候注意修改appid和token。

/**
* WordPress 发布文章主动推送到百度熊掌号
*/
if(!function_exists('Baidu_Submit')){
    function Baidu_Submit($post_ID) {
        //已成功推送的文章不再推送
        if(get_post_meta($post_ID,'Baidusubmit',true) == 1) return;
        $url = get_permalink($post_ID);
        $copy = get_post_meta($post->ID, 'wzurl', true);
        if (empty($copy)) {
        $api = 'http://data.zz.baidu.com/urls?appid=你的熊掌号 ID&token=你的准入密钥&type=original';
        }else{
        $api = 'http://data.zz.baidu.com/urls?appid=你的熊掌号 ID&token=你的准入密钥&type=realtime';   
        }
        $request = new WP_Http;
        $result = $request->request( $api , array( 'method' => 'POST', 'body' => $url , 'headers' => 'Content-Type: text/plain') );
        $result = json_decode($result['body'],true);
        //如果推送成功则在文章新增自定义栏目 Baidusubmit,值为 1
       if (array_key_exists('success_realtime',$result)||array_key_exists('success_original',$result)) {
             add_post_meta($post_ID, 'Baidusubmit', 1, true);
       }
    }
    add_action('publish_post', 'Baidu_Submit', 0);
}

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注