EMLOG优化百度自动推送JS和防止重复推送的方法
对于百度搜索资源平台提供的主动推送功能,相信很多站长朋友都了解过,现在就来为大家分享一个实现百度自动推送JS优化,从而规避错误、重复推送和判断文章是否被收录方法。
一、操作步骤
1、打开模板文件module.php,在合适的位置添加如下代码
<?php
/**
* WordPress 百度搜索自动推送、主动收录 JS 优化 By 张戈博客
* 文章地址:http://zhangge.net/5100.html
* 转载请保留出处,谢谢合作!
**/
function bdPushData($id){
$url=Url::log($id);
if(baidu($url)==1){
echo '<!--本文已收录,不输出推送代码-->';
}else{
echo "<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
/*
* 判断内容页是否百度收录,并且以博主和或者理员身份访问博客文章时自动向百度提交未收录的文章
*
*/
function baidu($url){
$url='http://www.baidu.com/s wd='.$url;
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$rs=curl_exec($curl);
curl_close($curl);
if(!strpos($rs,'没有找到')){
return 1;
}
else{
return 0;
}
}
function checkbaidu($id){
$url=Url::log($id);
if(baidu($url)==1){
echo "百度已收录";
} else {
if (ROLE == 'admin' || ROLE == 'writer') {
$urls = array($url,);
$api = 'http://data.zz.baidu.com/urls site=********&token=********';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
echo '已自动提交给度娘';
}
echo "<a style=\"color:red;\" rel=\"external nofollow\" title=\"点击提交收录\" target=\"_blank\" href=\"http://zhanzhang.baidu.com/sitesubmit/index sitename=$url\">坐等收录</a>";
}
}
?>
2、打开模板文件footer.php,在</html>前写入如下调用代码
<?php echo bdPushData($logid);?>
3、打开模板文件echo_log.php,在适当的位置写入如下调用代码
<?php echo checkbaidu($logid);?>
二、原理解析
通过PHP代码判断内容页是否百度收录,如果未收录则在博主和或者理员身份访问博客文章时自动向百度提交未收录的文章,已收录则忽略提交,从而避免重复推送,防止占用推送额度,防止因推送频繁造成的负面影响
三、注意事项
1、本教程同样适用于其他开源的PHP网站程序
2、请务必注意$api = 'http://data.zz.baidu.com/urls site=********&token=********';,必须将api后面的地址更换为自己网站的接口调用地址