最近百度站长平台改版之后,以前的百度实时推送功能好像跟现在的熊掌号提交有冲突,而且为了跟上百度脚步,我们就很有必要把以前的百度实时推送改为熊掌号提交功能。今天我就以 Nana 主题为例进行说明改造,希望能够起到抛砖引玉的作用。
一、H5 页面结构化改造
1、在 Nana 主题的 \inc\functions\seo.php 文件中找到以下代码(大概在 52 行)
- <?php if ( is_single() ) { ?>
在它的下方添加以下代码
- <link rel="canonical" href="<?php the_permalink();?>"/>
- <script type="application/ld+json">
- {
- "@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
- "@id": "<?php the_permalink();?>",
- "appid": "你的熊掌号 ID",
- "title": "<?php echo trim(wp_title('',0)); ?>",
- "images": [
- "<?php if ( get_post_meta($post->ID, 'wzshow', true) ){echo get_post_meta($post->ID, 'wzshow', true); }else{echo catch_image();} ?>"
- ],
- "description": "<?php if ( get_post_meta($post->ID, 'description', true) ){$xiongzhms= get_post_meta($post->ID, 'description', true);$xzhms=utf8Substr($xiongzhms,0,120);echo $xzhms; }else{$xzhmss=utf8Substr(trim($description),0,120);echo $xzhmss;} ?>",
- "pubDate": "<?php echo get_the_time('Y-m-d\TH:i:s');?>"
- }
- </script>
- <script src="//msite.baidu.com/sdk/c.js?appid=你的熊掌号 ID"></script>
添加后的代码如下:
注意:
1、记得将以上代码中的『你的熊掌号 ID』改为你自己真正的熊掌号 ID,具体 ID 获取可以登录熊掌号后点击页面改造后即可看到,具体见下图:
2、这个只是针对 Nana 主题的,其他主题的话,一般都是将上述代码添加到主题的 header.php 文件中。
二、熊掌号内容/原创 API 提交
这里我们需要将 Nana 主题原来的百度实时推送功能代码修改为自动提交到熊掌号中,具体打开 Nana 主题的 functions.php 文件,找到以下代码:
- /**
- * WordPress 发布文章主动推送到百度,加快收录保护原创【WordPress 通用方式】
- */
- if(!function_exists('Baidu_Submit')){
- function Baidu_Submit($post_ID) {
- $WEB_TOKEN = get_option('ygj_token_id'); //这里请换成你的网站的百度主动推送的 token 值
- $WEB_DOMAIN = home_url();
- //已成功推送的文章不再推送
- if(get_post_meta($post_ID,'Baidusubmit',true) == 1) return;
- $url = get_permalink($post_ID);
- $api = 'http://data.zz.baidu.com/urls?site='.$WEB_DOMAIN.'&token='.$WEB_TOKEN;
- $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',$result)) {
- add_post_meta($post_ID, 'Baidusubmit', 1, true);
- }
- }
- add_action('publish_post', 'Baidu_Submit', 0);
- }
修改为
- /**
- * 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);
- }
注意:
1、记得修改以上代码中的『你的熊掌号 ID』和『你的准入密钥』,熊掌号 ID 和准入密钥在熊掌的内容提交 - API 提交中直接获得。
2、这个代码利用了自定义字段 wzurl 来判断是原创还是非原创,根据 Nana 主题的设计,非原创文章都会有一个自定义字段 wzurl,它的值就是该篇文章来源 URL 地址,所以如果你在编辑文章的时候不填写编辑器下方的『原文链接地址』的话,哪怕是勾选了转载文章或者投稿文章也会按原创文章进行提交给熊掌号。介意的话自行修改以上代码的自定义字段 wzurl 即可。
具体效果
我的熊掌号是用百家号账号绑定的,通过设置自动提交给熊掌号之后,懿古今和 boke112 导航两个站点发布的文章都会自动更新到我那个百家号,具体见下图:
总结
本文只是在 Nana 主题的基础上进行修改,所以不一定适合其他主题(PS:WordPress 版本的 Blogs 主题适用)。换句话的意思就是说其他主题如果想实现这个文章发布自动提交到熊掌号的话,可以参考《纯代码实现熊掌号 H5 页面结构化改造及数据提交插件》这篇文章。PS:Nana 主题 3.21 版本和 WordPress 版本的 Blogs 主题 1.42 版本已集成有自动提交熊掌号功能。
发表于2017-12-05 12:35 沙发
我修改一下zblog得提交
@飞鸟慕鱼博客方法和思路都差不多,区别就在于获取摘要和图片而已, [威武]
发表于2017-12-05 18:46 板凳
额,EM也可以改额
@姜辰方法和思路都差不多,区别就在于获取摘要和图片而已
发表于2017-12-07 07:26 地板
不错,赞一个!代码还是很高效的!
@明月登楼的博客[呲牙] 能用代码就不用插件,所以就直接把以前的实时推送换一个API就变成提交给熊掌号了
发表于2017-12-08 20:24 4楼
怎么知道是否添加成功?
@无柳登录熊掌号就能看到相关报表数据
发表于2017-12-27 00:08 5楼
『你的熊掌号ID』和『你的准入密钥』是复制代码后,就把这两项改了,还是在后台改呢?我的NANA是旧版本,还没有熊掌号的那个版本,所以要自己加代码,请教一下。
@磁力搬铁机不想升级就按本文的步骤折腾,在代码中直接将熊掌号ID和密钥填到代码中。最新版本主题只需要在后台填写即可。
发表于2018-01-29 10:32 6楼
写的不错
发表于2018-05-06 21:54 7楼
H5 页面结构化改造,添加了有什么用?直接添加熊掌号api代码到functions不行吗?
现在代码好像变了,要怎么修改?
if (empty($copy)) {
$api = ‘baidu.com/urls?appid=你的熊掌号 ID&token=你的准入密钥&type=original’;
}else{
$api = ‘baidu.com/urls?appid=你的熊掌号 ID&token=你的准入密钥&type=realtime’;
@讯沃电商blog只要对页面进行了改造才能提交,不改造不符合要求提交也没用。如何修改请看本站分享的《关于熊掌号不收录的原因分析及解决办法》。文中的代码已经更新为正常的
发表于2019-01-30 11:43 8楼
按照博主的修改了,可以提交天级收录了,谢谢!
@稀幻不用客气,有用就好