网站建设

原创插件:百度收录查询和显示WordPress插件(自定义栏目优化版)

张戈 · 11月22日 · 2014年 ·

十月底,张戈在博客分享了《WordPress 给文章添加百度是否已收录查询和显示功能(数据库优化版)》一文,反响不错!而且还被站长之家转载了,无奈多了个 nofollow,让我这篇原创文章大半个月都没被收录,(/ □ \)。。。

今天,看到博客一大片惨不忍睹的[百度未收录]红色字样时,突然想到其实这个功能也不需要对数据库动刀啊!因为很多站长可不敢随便操作数据库呢!WordPress 不是还有自定义栏目嘛??而且,自定义栏目还可以在后台随时修改键值呢!因为百度偶尔会将已收录的文章 K 掉,最近张戈博客实在遭遇太多这种早上收录,晚上被 K 的惨况!如果被意外 K 掉了,我们还可以手动修改收录结果,让展示结果更精准!

还是那句话,只要有想法,技术都不是问题!小小的研究了一下 WordPress 的自定义栏目,不到半小时,我就将上次分享的百度已收录的查询和显示代码改成了自定义栏目改进版(post_meta)!

一、效果预览

原创插件:百度收录查询和显示WordPress插件(自定义栏目优化版) 原创插件:百度收录查询和显示WordPress插件(自定义栏目优化版)

二、WordPress 插件版

刚好昨晚开发了一个 WordPress 对话框插件,趁热打铁,索性也将这个功能打包成了 WordPress 插件,方便小白站长们使用!

目前该插件已通过 WordPress 官方审核,插件地址:

插件地址:https://wordpress.org/plugins/wp-baidu-record/

下载地址:https://downloads.wordpress.org/plugin/wp-baidu-record.zip

如果好用,希望你能抽空前往给个好评,支持下~非常感谢!

安装方法:

方法①、进入后台插件在线安装界面,搜索 wp baidu record 并按照提示安装启用即可【推荐】;

方法②、下载文件并解压,将 wp-baidu-record 文件夹上传到 /wp-content/plugins/目录,在插件后台启用即可;

方法③、进入后台插件安装界面,选择上传安装插件,并选择下载得到的 zip 压缩包即可;

插件设置:

①、插件激活后,点击[设置]按钮进入插件设置界面,插件默认设置如下:

原创插件:百度收录查询和显示WordPress插件(自定义栏目优化版)

默认是在文章内容的最后输出百度收录结果,而且是公开显示!

②、如果你想自定义输出位置,那么请勾选自定义结果输出位置,然后按照提示操作:

原创插件:百度收录查询和显示WordPress插件(自定义栏目优化版)

具体做法:前往 WordPress 主题目录,找到文章模板(一般是 single.php),然后在想要显示的位置添加如下函数即可:

<?php echo baidu_record(); ?>

比如,张戈博客是将以上函数添加到了文章模板的副标题位置:

原创插件:百度收录查询和显示WordPress插件(自定义栏目优化版)

三、纯代码部署

理论上,任何 WordPress 插件都能采用纯代码来替代,所以继续分享一下纯代码部署的方法。不过要特别说明的是,代码版和插件版不能同时存在,否则会产生冲突!

①、编辑 WordPress 主题目录下的 functions.php 文件,在最后一个?>标签之前,添加如下代码并保存:

function baidu_check($url, $post_id){
    $baidu_record  = get_post_meta($post_id,'baidu_record',true);
    if( $baidu_record != 1){
        $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,'没有找到该 URL。您可以直接访问') && !strpos($rs,'很抱歉,没有找到与') ){
            update_post_meta($post_id, 'baidu_record', 1) || add_post_meta($post_id, 'baidu_record', 1, true);
            return 1;
        } else {
            return 0;
        }
    } else {
       return 1;
    }
}
function baidu_record() {
    global $wpdb;
    $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
    if(baidu_check(get_permalink($post_id), $post_id ) == 1) {
        echo '<a target="_blank" title="点击查看" rel="external nofollow" href="http://www.baidu.com/s?wd='.get_the_title().'">百度已收录</a>';
   } else {
        echo '<a style="color:red;" rel="external nofollow" title="点击提交,谢谢您!" target="_blank" href="http://zhanzhang.baidu.com/sitesubmit/index?sitename='.get_permalink().'">百度未收录</a>';
   }
}

 ②、编辑 WordPress 主题下的文章模板(一般是 single.php),在想要显示收录结果的位置添加如下代码并保存:

<?php baidu_record(); ?>

和上文插件的安装方法一致,可进一步参考操作。

四、附加说明

这个功能实际上已有人开发了插件或分享过类似代码,我只是在原来的基础上做了一些改进,具体如下:

原版特性:

1. 原版功能:通过 curl 在百度查询本页 url 并获取结果,如果存在就输出已收录,否则就是未收录,并且可点击提交 url

2. 原版缺点:每次打开页面都需要在百度查询一遍,严重拖慢速度!当然可以利用缓存插件解决此问题。

改进特性:

i. 通过 curl 在百度查询 url 收录结果,如果已收录就将结果写入到文章的 post meta 记录中。待下一次再次打开页面时,先检查文章自定义栏目字段来判断是否已收录,若已收录则直接输出,而不再执行 curl 查询,从而解决了 curl 实时查询拖慢速度的问题!

ii. 若查询结果为已收录,亦会输出一个在百度查询文章标题的 a 标签,用于查看文章排名,甚至可以查看是否被人转载或篡改!

iii. 管理员可以随时在后台文章编辑界面中的自定义栏目来修改是否已收录的结果,自定义名称为 baidu_record,1 为已收录,0 为未收录。

改进之后,如果是已收录的文章,将不会重复查询,从而解决了原版代码严重拖慢网站速度的缺憾!

上次分享的方法是将结果写入到数据库,而且部署的时候需要手动操作数据库,并添加字段,相对比较麻烦也很容易让没有经验的小白站长产生畏惧感。此次改进,就弥补了这个不足,而且额外制作了插件版,降低了这个功能的添加门槛,希望大家喜欢!

93 条回应
  1. 琳琅2017-2-19 · 11:30

    请问下zblogphp可以使用吗?有没有类似插件呢?

  2. 99伴奏网2017-3-3 · 19:33

    张戈你好,我想通过百度收录查询插件实现我的文章被百度收录后显示在第几页,第几位,这个功能怎么做?
    “文章已经被百度收录,在第3页第7位”,类似这样。

  3. Aaron2017-4-3 · 9:49

    这个插件不支持中文路径啊,希望博主能更新下,我之前没注意,有很多中文路径的文章被收录了。

  4. 博客博物馆2017-5-18 · 12:30

    对于中文域名来说,这个检测不准确,全部都是已收录。。。

  5. 米扑2017-10-23 · 22:44

    很赞,值得学习

  6. 天绿元素2018-2-3 · 16:49

    这个自己看着蛮方便,但是针对访问者有什么好的作用吗

  7. 鸟叔の窝2018-2-8 · 17:53

    装是装上了,不知道咋看?看什么

  8. flyingsheep2018-4-30 · 22:41

    挺好用的

  9. 斗图站长2018-5-18 · 15:41

    添加该插件后页面提示:Warning: preg_match_all() expects at least 3 parameters, 2 given in D:\wwwroot\owenliwei\wwwroot\wp-content\plugins\wp-baidu-record\wp-baidu-record.php on line 22
    请问博主该如何修改啊

    • 张戈2018-5-27 · 11:54

      升级看看?已修复

      • 斗图站长2018-5-29 · 13:52

        感谢博主,可以了 😛

  10. 水月2018-6-15 · 11:15

    Fatal error: Cannot redeclare baidu_check() (previously declared in /wp-content/themes/XXX/functions.php:2056) in /wp-content/plugins/wp-baidu-record/wp-baidu-record.php on line 13

    安装插件后提示错误

    • 张戈2018-7-1 · 19:52

      baidu_check 这个函数冲突了,说明你其他地方有相同的函数名

  11. ijidi2018-12-27 · 16:25

    请教一个博主,都使用了哪些API啊? 还是直接解析的HTML?谢谢