WordPress自动/主动推送到百度
- 发表于
- WordPress
以前都是用sitemap,今天不说sitemap,提供另外两种方法,自动和主动推送提交给百度:
Javascript自动推送
请将以下代码安装在网站页面中,安装完成后即可实现链接自动推送功能。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> |
如果站长使用PHP语言开发的网站,可以按以下步骤操作:
- 创建名为“baidu_js_push.php”的文件,文件内容是上述自动推送JS代码;
- 在每个PHP模板页文件中的 <body> 标记后面添加一行代码:
1 |
<?php include_once("baidu_js_push.php") ?> |
PHP自动推送
1 2 3 4 5 |
//百度站长的 JS 代码实现自动推送 add_action( 'wp_enqueue_scripts', 'fanly_baidu_zz_enqueue_scripts' ); function fanly_baidu_zz_enqueue_scripts(){ wp_enqueue_script( 'baidu_zz_push', 'http://push.zhanzhang.baidu.com/push.js'); } |
PHP主动推送一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
add_action('save_post', 'wpjam_save_post_notify_baidu_zz', 10, 3); function wpjam_save_post_notify_baidu_zz($post_id, $post, $update){ if($post->post_status != 'publish') return; $baidu_zz_api_url = 'http://data.zz.baidu.com/urls?site=your_site_url&token=your_token'; //请到百度站长后台获取你的站点的专属提交链接 $response = wp_remote_post($baidu_zz_api_url, array( 'headers' => array('Accept-Encoding'=>'','Content-Type'=>'text/plain'), 'sslverify' => false, 'blocking' => false, 'body' => get_permalink($post_id) )); } |
PHP主动推送二
①、WrodPress 通用方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/** * WordPress发布文章主动推送到百度,加快收录保护原创【WordPress通用方式】 */ 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); } |
②、curl_init 方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
/** * WordPress发布文章主动推送到百度,加快收录保护原创【curl_init方式】 */ if(!function_exists('Baidu_Submit') && function_exists('curl_init')) { 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; $ch = curl_init(); $options = array( CURLOPT_URL => $api, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => $url, CURLOPT_HTTPHEADER => array('Content-Type: text/plain'), ); curl_setopt_array($ch, $options); $result = json_decode(curl_exec($ch),true); //如果推送成功则在文章新增自定义栏目Baidusubmit,值为1 if (array_key_exists('success',$result)) { add_post_meta($post_ID, 'Baidusubmit', 1, true); } } add_action('publish_post', 'Baidu_Submit', 0); } |
③、file_get_contents 方式
鉴于有个别站长反馈代码添加后,发布或更新文章,自定义栏目中都不会出现我们期望的baidusubmit,我要他们检查 token 和域名,也反馈是正确的,直到我亲自给一个站长 Debug 时才发现是他主机的 curl_exec()函数被禁用了!既然这个函数都不能用了,那代码也肯定无法正常推送了!
于是,我额外写了一个普遍支持的 file_get_contents 方式,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
/** * WordPress发布文章主动推送到百度,加快收录保护原创【file_get_contents方式】 */ 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 方式吧!
以上三段代码取自:via1,via2,都放在functions.php下。
现在发布新文章,文章地址将会被主动推送到百度。被成功推送的文章,将自动出现如下自定义栏目,从而避免代码重复推送的尴尬,如果你需要更新文章再次推送数据,那么删除或修改这个自定义栏目即可再次被推送。
代码部署
从上面选好合适的代码后(推荐①),先打开百度官方页面:http://zhanzhang.baidu.com/linksubmit/index,获取你网站的专属的 token 值,替换到代码中的 "xxxxxxxxx"(Ps:域名已更新为动态变量,无需另外更改)。
原文连接:WordPress自动/主动推送到百度
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。