首页 网站建设 Wordpress 浏览内容
【WordPress】代码集成百度Sitemap实时推送
之前百度官方出了一款wordpress的结构化数据实时推送插件,该款wordpress插件的作用是向百度提交结构化数据的xml,帮助站点保证百度蜘蛛对站点的抓取频率
但是推送页面不保证收录(http://zhanzhang.baidu.com/schema/index)
百度官方并没有推出Sitemap的实时推送插件,其实Sitemap的实时推送才能最大几率的保证站点的页面被抓取并且被收录
不过大多数站点并没有开通Sitemap权限,以下是引用百度官方对实时推送的介绍:http://zhanzhang.baidu.com/wiki/215
其实前面两个代码都是奶嘴写的(v7v3)这次写这个是因为前些时间百度那边一直没有推送数据才检查修改的,下面直接上代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function PushBaiDu($post_id,$post){ //百度推送接口地址 $Push = '百度推送接口地址'; $PushUrl = get_permalink($post_id); $PushDate = $post->post_data; //构造推送xml数据 $PushXml = '< ?xml version="1.0" encoding="UTF-8"?> <urlset> <url> <loc>< ![CDATA['.$PushUrl.']]></loc> <lastmod>'.$PushDate.'</lastmod> <changefreq>daily</changefreq> <priority>0.9</priority> </url> </urlset>'; //创建http请求对象 $wp_http_obj = new WP_Http(); //发送http post请求提交xml数据 return $wp_http_obj->post($Push, array('body' => $PushXml, 'headers' => array('Content-Type' => 'text/xml'))); } add_action('publish_post', 'PushBaiDu'); |
将以上代码加入到当前使用的wordpress主题的functions.php文件中即可,记得替换$Push变量的值为你们的百度Sitemap实时推送接口调用地址,如果您的站点没有开通百度Sitemap权限则此代码不可用。
Sitemap实时推送接口获取地址:http://zhanzhang.baidu.com/sitemap/pingadd
加上以上代码后发布文章wordpress将会自动推送文章到百度的服务器~本站的博客聚集地实时推送以及评论福利的核心代码都和本教程的代码相似,下面来张本站昨晚改进后的推送列表截图:
如果使用以上代码出现报错:Warning: Missing argument 2 for PushBaiDu(),请将代码改成以下版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function PushBaiDu(){ global $post_id; global $post; //百度推送接口地址 $Push = '百度推送接口地址'; $PushUrl = get_permalink($post_id); $PushDate = $post->post_data; //构造推送xml数据 $PushXml = '< ?xml version="1.0" encoding="UTF-8"?> <urlset> <url> <loc>< ![CDATA['.$PushUrl.']]></loc> <lastmod>'.$PushDate.'</lastmod> <changefreq>daily</changefreq> <priority>0.9</priority> </url> </urlset>'; //创建http请求对象 $wp_http_obj = new WP_Http(); //发送http post请求提交xml数据 return $wp_http_obj->post($Push, array('body' => $PushXml, 'headers' => array('Content-Type' => 'text/xml'))); } add_action('publish_post', 'PushBaiDu'); |
若上述方法在百度那边看不到数据,你需要检查代码放置是否有误;再考虑更换以下代码:
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 30 31 32 33 34 35 | function tobaidu($url){ $ntime=time(); $now = date('Y-m-d',$ntime); $data ='< ?xml version="1.0" encoding="UTF-8"?>'; $data .=' <urlset>'; $data .=' <url>'; $data .=' <loc>< ![CDATA['.$url.']]></loc>'; $data .=' <lastmod>'.$now.'</lastmod>'; $data .=' <changefreq>daily</changefreq>'; $data .=' <priority>0.8</priority>'; $data .=' </url>'; $data .=' </urlset>'; $pingurl="http://ping.baidu.com/sitemap?site=www.xxx.com&resource_name=sitemap&access_token=XXXXXXX";//你的接口地址 $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $pingurl); // 要访问的地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_USERAGENT, "curl/7.12.1"); // 模拟用户使用的浏览器 curl_setopt($curl, CURLOPT_COOKIE, $cookie); curl_setopt($curl, CURLOPT_REFERER,""); curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包 curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 $tmpInfo = curl_exec($curl); // 执行操作 if (curl_errno($curl)) { echo 'Errno'.curl_error($curl);//捕抓异常 } curl_close($curl); // 关闭CURL会话 return $tmpInfo; // 返回数据 } $tt= tobaidu("http://www.moyoo.net/");//更换成你自己的地址 |
若有更有效的代码请联系推荐,谢谢!
现在只要用百度统计 就有这功能了