之前写了一个理由百度的主动推送JS,下面还有一个WordPress大神张戈写的WordPress SEO发布文章主动推送到百度功能.
下面示范下如何WordPress添加文章主动推送到百度功能:
有了主动推送就好多了,自己写的高质量原创文章发布,发布后就会推送到百度,从而告知了准确的原创来源,从而杜绝了抄袭者和原创者出现角色互换的尴尬!
先要前往百度站长平台获取你的站点密匙,获取百度站点密匙前需要添加网站:
wordpress seo教程:将网站提交到百度站长工具提高收录排名
相关文章: WordPress SEO网站底部添加百度自动推送收录代码
与这篇WordPress SEO网站底部添加百度自动推送收录代码并无冲突可以都加上
添加好网站后点击左侧菜单的链接提交:
然后往下拉 选择主动推送,这段=后面的站点密匙复制
打开当前WordPress主题开发的functions.php文件,在<?php下面的?>前面添加如下代码:
/** * WordPress发布文章主动推送到百度,加快收录保护原创【WordPress通用方式】 * 文章地址:https://zhang.ge/5041.html */ if(!function_exists('Baidu_Submit')){ function Baidu_Submit($post_ID) { $WEB_TOKEN = 'xxxxxxxxxxx'; //这里请换成你的网站的百度主动推送的token值 $WEB_DOMAIN = get_option('home'); //已成功推送的文章不再推送 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); }
发布文章主动推送到百度.
如果该文章已有Baidusubmit字段则不再主动推送.
添加在WordPress主题开发的functions.php文件如本图:
然后上传覆盖当前WordPress主题开发的functions.php文件.
我们在后台添加文章后点发布后,文章底部会生成有一段自定义字段,请看下图.
你可以在链接提交里面看到百度的数据提交统计:
如果本段代码没有生成 Baidusubmit自定义字段,可能是自定义字段没有打开:
而自定义字段功能默认是没有打开的,下面我示范下如何打开:
还是没有显示的话可能是主机的 curl_exec()函数被禁用了!既然这个函数都不能用了,那代码也肯定无法正常推送了!
试试 file_get_contents 方式,代码如下:
/** * WordPress发布文章主动推送到百度,加快收录保护原创【file_get_contents方式】 * 文章地址:https://zhang.ge/5041.html */ if(!function_exists('Baidu_Submit')) { function Baidu_Submit($post_ID) { $WEB_TOKEN='xxxxxxxxx'; //这里换成你的网站的百度主动推送的token值 $WEB_DOMAIN=get_option('home'); //已成功推送的文章不再推送 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; $data = array ( 'http' => array ( 'method' => 'POST', 'header'=> "Content-Type: text/plain", "Content-Length: ".strlen($url)."rn", 'content' => $url ) ); $data = stream_context_create($data); $result = file_get_contents($api, false, $data); $result = json_decode($result,true); //如果推送成功则在文章新增自定义栏目Baidusubmit,值为1 if (array_key_exists('success',$result)) { add_post_meta($post_ID, 'Baidusubmit', 1, true); } } add_action('publish_post', 'Baidu_Submit', 0); }
Ps:file_get_contents 的运行效率应该是略低于curl的,不过就推送一条数据,就基本没有差别啦!如果你使用方式一没有成功,那么就试试 file_get_contents 方式吧!
本文并没有张戈大神写的原文详细,你可以输入代码头部的原文链接查看相关代码解释.