前段时间有博主反馈说点击文章页中的百度分享按钮的新浪微博,仅能获取文章标题而无法获取文章摘要和图片,经过验证果然如此,分享到新浪微博只显示一个标题,具体见下图:
对于这个问题,其实张戈博主早已分享了具体的解决办法,详见『百度分享无法抓取图片及摘要的折中解决办法』,不过很多人都觉得很复杂,根本不懂如何下手去折腾。经过与雅兮网博主交流后,他提供了一种比较简单的方法,今天我们就以 Nana主题为例,跟大家说一说雅兮网提供的方法去解决百度分享到新浪微博博客无摘要无图片的问题。
打开 Nana主题的 footer.php 文件,找到以下代码:
- <script>window._bd_share_config={“common”:{“bdSnsKey”:{},“bdText”:“”,“bdMini”:“2”,“bdMiniList”:false,“bdPic”:“”,“bdStyle”:“1”,“bdSize”:“32”},“share”:{}};with(document)0[(getElementsByTagName(‘head’)[0]||body).appendChild(createElement(‘script’)).src=’http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=’+~(-new Date()/36e5)];</script>
接着把代码里面的 “bdText”:”” 代码修改为
- “bdText”: “【” + $(“title”).text() + “】” + $(“.single-content p:lt(2)”).text()
PS:这个代码也可以修改成以下形式的代码:
- “bdText”: “【” + $(“title”).text() + “】” + “<?php echo wp_trim_words( get_the_content(), 138, ‘…’ );?>”
把 “bdPic”:”” 代码修改为
- “bdPic”: $(“.single-content img:first”) ? $(“.single-content img:first”).attr(“src”) : “”
PS:这个代码也可以修改成以下形式的代码:
- “bdPic”: “<?php echo catch_images();?>”
修改好之后的 JS 代码应该是这样的:
- <script>window._bd_share_config={“common”:{“bdSnsKey”:{},“bdText”: “【” + $(“title”).text() + “】” + $(“.single-content p:lt(2)”).text(),“bdMini”:“2”,“bdMiniList”:false,“bdPic”: $(“.single-content img:first”) ? $(“.single-content img:first”).attr(“src”) : “”,“bdStyle”:“1”,“bdSize”:“32”},“share”:{}};with(document)0[(getElementsByTagName(‘head’)[0]||body).appendChild(createElement(‘script’)).src=’http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=’+~(-new Date()/36e5)];</script>
PS:可以忽略前面说的代码,只需要将最后一步完整的JS代码替换 footer.php 的 JS 代码即可。
修改好 footer.php 文件的 JS 代码保存后,我们再来分享文章到新浪微博就可以看到可以获取文章的摘要和图片了,具体见下图:
到了这里,虽然可以获取文章的摘要和图片,但是真正点击分享到新浪微博之后,摘要是真的可以分享成功,但是图片就不一定每次都成功(只是偶尔成功),有时候明明已经勾选了图片,但是点击分享后只看到摘要无图片,对于这个问题至今尚未找到很有效的办法,期待牛人们分享更厉害的解决办法。
最后再说一句,这个方法不单单适用于 WordPress 站点和 Nana主题,其他站点和主题也是同样使用。也可以直接到百度分享官网获取JS代码后,直接替换里面的 “bdText”:”” 和 “bdPic”:”” 代码即可(PS:记得替换代码中的 .single-content 标签选择器为自己文章页内容的标签选择器)。