前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >百度分享无法抓取图片及摘要的折中解决办法

百度分享无法抓取图片及摘要的折中解决办法

作者头像
张戈
发布2018-03-26 13:57:03
9230
发布2018-03-26 13:57:03
举报
文章被收录于专栏:张戈的专栏张戈的专栏

前天,cy 在《仿异次元百度分享工具条张戈修改版》一文留言告知,部分百度分享无法抓取图片:

百度分享无法抓取图片及摘要的折中解决办法
百度分享无法抓取图片及摘要的折中解决办法

亲自试了下,发现还真是抓不到图片,而且分享的内容也很单调!就一个文章标题而已,反观多说评论点击喜欢后的分享,就丰富多了!

于是翻箱倒柜各种搜,发现网络上并没有完整有效的教程,不过倒是让我找到了个关键词:searchPic。继续搜索这个关键词,找到了百度分享官方说明文档如下:

代码语言:javascript
复制
<!-- Baidu Button BEGIN -->
<div id="bdshare" class="bdshare_t bds_tools get-codes-bdshare">
<a class="bds_qzone"></a>
<a class="bds_tsina"></a>
<a class="bds_tqq"></a>
<a class="bds_renren"></a>
<span class="bds_more">更多</span>
</div>
<script type="text/javascript" id="bdshare_js" data="type=tools&mini=1" ></script>
<script type="text/javascript" id="bdshell_js"></script>
<script type="text/javascript">
/**
* 在这里定义bds_config
*/
var bds_config = {
'bdDes':'您的自定义分享摘要', //'请参考自定义分享摘要'
'bdText':'您的自定义分享内容', //'请参考自定义分享内容'
'bdPopTitle':'您的自定义pop窗口标题', //'请参考自定义pop窗口标题'
'bdTop':'您的自定义侧栏高度', //'请参考自定义侧栏高度'
'bdComment':'您的自定义分享评论', //'请参考自定义分享评论'
'bdPic':'您的自定义分享出去的图片', //'请参考自定义分享出去的图片'
'searchPic':'是否自动抓取页面图片',//'0为抓取,1为不抓取,默认为0,目前只针对新浪微博'
'wbUid':'您的自定义微博 ID', //'请参考自定义微博 id'
'render':false, //'请参考自定义分享回流量统计'
'review':'normal', //'请参考自定义分享回流签名'
'snsKey':{'tsina':'appkey'} //'请参考自定义分享到平台的appkey'
}
document.getElementById('bdshell_js').src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000);
</script>
<!-- Baidu Button END -->

按照官方的办法,只要在<div>或者 javascript 里面定义一下 searchPic:0 不就可以了吗?

然后,在 修改→清缓存→没效果→修改...几轮苦逼测试后,发现依然无效,分享时还是不出现图片!

研究了下点击分享后弹出的网址内容,发现里面的 searchPic 值死活为 false:

百度分享无法抓取图片及摘要的折中解决办法
百度分享无法抓取图片及摘要的折中解决办法

当我将地址中的 searchPic=false 手动改成 searchPic=true 或 searchPic=0 时,图片就出来了:

百度分享无法抓取图片及摘要的折中解决办法
百度分享无法抓取图片及摘要的折中解决办法

但是,无论是在 div 里的 data 中定义 searchPic,还是在 javascript 中定义 searchPic,点击分享弹出的地址中,searchPic 依然为 false!真无语!

折腾了半天没搞定,正要放弃时,突然注意到官方代码中的 pic 可以定义自定义图片,于是定义了一张图片地址试了试,发现还真可以~!

既然 searchPic 不好使,那只好先用 pic 定义个特色图片凑合下咯!

下面说下给百度分享加上特色图片和摘要内容的简单的方法:

一、在 function.php 中新增如下函数(有的主题可能已存在,请自查):

代码语言:javascript
复制
/*特色图片*/
function get_post_thumbnail_url($post_id){
$post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
$thumbnail_id = get_post_thumbnail_id($post->ID);
if($thumbnail_id ){
$thumb = wp_get_attachment_image_src($thumbnail_id, 'thumbnail');
return $thumb[0];
   }else{
return false;
  }
}

二、定义 pic 图片及 text 分享内容:

以下方法二选一即可,代码中的@张戈博客,请自行修改成相应的微博 ID,或直接使用博客名称即可:

①、如果博客用的是仿异次元的百度分享工具条,那么可以如下修改 share.php 的相应位置代码:

代码语言:javascript
复制
<!--获取文章摘要(新增)-->
<?php
if (!function_exists('utf8Substr')) {
function utf8Substr($str, $from, $len)
{
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
    }
}
if ( is_single() ){
if ($post->post_excerpt) {
$description = $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'];
       }
$description = utf8Substr($post_content,0,200);
   }
}
?>
<!--百度分享(修改)-->
<div data="{'url':'<?php the_permalink()?>','pic':'<?php echo get_post_thumbnail_url($post->ID); ?>','text':'分享@张戈博客 的文章「<?php the_title(); ?>」:<?php echo trim($description); ?>...'}" class="bdshare_t bds_tools get-codes-bdshare stb_share_buttons stb_group" id="bdshare">

其中 2~24 行代码是新增代码,请在 share.php 中添加即可

第 21 行中可以修改内容字数,代码中默认设置为 200 个。

第 26 行是修改后的代码,在 share.php 中搜索“bdshare_t bds_tools get-codes” 找到位置后,替换整句代码即可。

②、通用方法:找到百度分享代码中的以下 javascript:

代码语言:javascript
复制
<script type="text/javascript">
document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + new Date().getHours();
</script>

替换成以下代码:

代码语言:javascript
复制
<!--获取文章摘要(新增)-->
<?php
if (!function_exists('utf8Substr')) {
   function utf8Substr($str, $from, $len)
   {
     return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
    }
}
if ( is_single() ){
   if ($post->post_excerpt) {
      $description = $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'];
       }
$description = utf8Substr($post_content,0,200);
    }
}
?>
<!--百度分享javascript-->
<script type="text/javascript">
var bds_config = {
'bdPic':'<?php echo get_post_thumbnail_url($post->ID); ?>',
'pic':'<?php echo get_post_thumbnail_url($post->ID); ?>',
'text':'分享@张戈博客 的文章「<?php the_title(); ?>」:<?php echo trim($description); ?>...'
}
document.getElementById('bdshell_js').src = "http://share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000);
</script>

做完以上操作后,你再点击分享,应该就会有图片和内容了:

百度分享无法抓取图片及摘要的折中解决办法
百度分享无法抓取图片及摘要的折中解决办法

不过图片只有一张!稍有遗憾,先凑合使用吧!

后续,张戈要是找到了解决办法,会继续分享!敬请关注张戈博客最新动态!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年05月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、在 function.php 中新增如下函数(有的主题可能已存在,请自查):
  • 二、定义 pic 图片及 text 分享内容:
相关产品与服务
网站建设
网站建设(Website Design Service,WDS),是帮助您快速搭建企业网站的服务。通过自助模板建站工具及专业设计服务,无需了解代码技术,即可自由拖拽模块,可视化完成网站管理。全功能管理后台操作方便,一次更新,数据多端同步,省时省心。使用网站建设服务,您无需维持技术和设计师团队,即可快速实现网站上线,达到企业数字化转型的目的。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档