纯代码检测文章是否被百度收录并前台仅管理员可见

百度搜索在国内的影响力还是非常之大的,目前本站流量有80%以上来自于百度搜索,所以做好百度搜索的工作是非常必要的。前期已经在站点中加上了自动推送百度搜索的代码(Wordpress百度搜索自动推送代码的优化改进 https://www.iappi.cn/2019_05/2019633.html),但仅仅推送了并非就可以高枕无忧了,因为是否收录并索引了才是关键。

图1.百度站长平台索引量情况

而在百度搜索资源平台(https://ziyuan.baidu.com/keywords/)上,也仅仅显示索引的变化,并没有具体到某一个网页的情况,所以还是非常有必要一目了然的看到是否收录的情况。互联网上也有不同的方法来实现,这次选择了代码加入functions.php文件来操作。

相应的代码如下:

/* 检查百度是否已收录文章页面 仅对管理员显示 */
function iappi($url){
$url='http://www.baidu.com/s?wd='.$url;//百度搜索直接搜索相应的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;
}
}
add_filter( 'the_content', 'baidu_submit' );
function baidu_submit( $content ) {
if( is_single() && current_user_can( 'manage_options') )//判断是否具有 manage_options权限
if(iappi(get_permalink()) == 1)
echo '<p align=right><b><a target="_blank" title="点击查看" rel="external nofollow" href="https://www.baidu.com/s?wd='.get_the_title().'">此文章已被百度收录</a></b>(仅管理员可见)</p>';
else
$content="<p align=right><b><a style=color:red target=_blank href=https://zhanzhang.baidu.com/sitesubmit/index?sitename=".get_permalink().">百度未收录!点击此处一键提给百度交</a></b>(仅管理员可见)</p>".$content;
return $content;
}

代码可以直接加到functions.php中,也可以按WordPress模板函数functions.php中加入函数的调用方式  https://www.iappi.cn/2019_06/2019833.html 进行处理,重新刷新站点,发现代码已经生效。

图2.百度已收录的情况
图3.百度已收录的搜索界面

当页面已经被百度搜索收录时,会在文章页显示已收录,并且点击会跳转到百度搜索界面,搜索的是文章的标题,一般情况下完整搜索标题都会出现在第一页第一条结果。

而没有被百度搜索收录时,会在文章出现显示未收录,点击后会跳转到站长平台的提交链接界面。

图4.百度未收录的情况

如上的这2种结果,都仅当管理员登录后才会出现,其他用户登录或者仅浏览的前提下,不会显示。

因为百度搜索的量比较大,而其余的搜索如bing、360、搜狗等,收录情况都不是很理想或者实际用户并不多,因此也不太想改动代码去判断其余搜索引擎的情况了。

后记:

经过2天简单使用,发现这个代码还是有个缺陷,因为CDN缓存了.html文件,所以当管理员登陆后查看的页面都会被缓存到CDN服务器上,其他人员打开这个页面同样会出现相同的位置与代码。

此外CDN缓存后再刷新页面也不会更新查询百度搜索,而要等CDN缓存的刷新。这也算是一个冲突的地方。