WordPress-熊掌号-三图模式-搜索结果出图结构代码改造

2018-06-0913:34:52 2 9,402
摘要

做了熊掌号的网站在搜索结果中会有更多出图的机会,更能吸引用户点击;搜索结果出一张图还是三张图,除了取决于页面改造、图片规格外,与熊掌号搜索指数也有着直接关系。

熊掌号——百度官方指数

百度今年不断的推出各种算法,惊雷都出2.0了,最近又有"极光算法"强调页面时间因子,都是以达到重视网站页面质量的目的。按百度官方的说法,在没有熊掌号之前,网站于百度搜索引擎之间的关系是隐性的,没有办法去衡量。网站普遍关注的"百度权重"并不是百度官方说法,而是第三方平台估算的结果,更多体现了搜索用户的点击行为,而不是百度搜索心中的”亲密度“。

百度熊掌号(图1:百度熊掌号)

而熊掌号指数的出现,可以认为是衡量百度搜索和网站之间关系的、最权威的分值,毕竟这是百度官方给出的一个数值分数,很少有这样的评判标准。做了熊掌号的网站在搜索结果中会有更多出图的机会,更能吸引用户点击;搜索结果出一张图还是三张图,除了取决于页面改造、图片规格外,与熊掌号搜索指数也有着直接关系。

旧代码熊掌号搜索结果单图模式出图

之前本站也有关于《WordPress-百度熊掌号结构化页面改造》相关文章,但是因为已经是去年11月份写的,当时只是最基础的结构改造,抓图出图也是单图模式。关于JSON代码的基础配置可以查看之前的文章,这里也就不贴图说明了。

熊掌号三图模式(图2:熊掌号搜索结果三图样式展示)

之前的JSON代码中images一项中主要是因为设置如下代码,这样的话就只能抓取提交一张缩略图而已,只能是单图模式呈现:

"images": ["<?php the_post_thumbnail_url(); ?>"],

代码实现熊掌号搜索结果出图-三图模式

所以这次代码改造目的就是实现抓取文章页多图,然后在熊掌号JSON代码前台显示时自动判断抓取3图提交。首先再当前使用的WordPress主题在主题的 function.php 中加入以下的代码:

//获取页面文章中的描述内容description
 function scool_excerpt($len=220){
 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,依次获取自定义图片/特色缩略图/文章首图
 function scool_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;
 }

以上代码用以实现当文章页有3图或以上时,抓取文章内第1、2、3张图,否则依次抓取自定义图片/特色缩略图/文章首图。

WordPress熊掌号JSON-LD三图抓取修改

然后在当前所用主题的 header.php 文件中的</head>前添加入如下类似代码,自己的APPID在熊掌号的页面改造示例中就可以找到了。

<?php
 if(is_single()||is_page()){
 echo '<script type="application/ld+json">{
 "@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
 "@id": "'.get_the_permalink().'",
 "appid": "168888xxxxxxx(改为自己的熊掌号ID)",
 "title": "'.get_the_title().'",
 "images": ["'.scool_post_imgs().'"],
 "description": "'.scool_excerpt().'",
 "pubDate": "'.get_the_time('Y-m-d\TH:i:s').'"
 }</script>
 ';}
 ?>
 <script src="//msite.baidu.com/sdk/c.js?appid=1582832777992365"></script>

上面蓝色if判断语句可以根据自己需要添加,比如相同配置直接在后面加,想要不同配置则复制另也一段加后面就好了;文章页面is_single(),标签页面is_tag(),独立页面is_page(),网站首页is_home(),栏目页面is_category()。根据自己网站的抓图需要进行设置。

WordPress(图3:WordPress熊掌号JSON-LD三图抓取修改)

比如本站的首页设置除了时间,其他都设置的是固定参数:

 "@id": "http://www.soul88.com",
 "appid": "1582xxxxxxxxxx",
 "title": "区块链知识技术资源分享 - 狩酷乐享 | 其乐无穷",
 "images": ["http://img.soul88.com/wp-content/uploads/2017/10/TIM20171007160115.jpg"],

结果验证测试

熊掌3图模式

设置完成后第二天收录的文章就开始三图模式展示了,好了,码完收工,就到这里了.......

avatar

发表评论取消回复

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

    • avatar Motbay

      好东西,我自己网站试了下可以用,很棒棒

      • avatar PinkyT

        感谢,这是我见过最详细的,稳定可用3Q