【修正报错】WordPress百度搜索自动推送、主动收录JS代码

老牛  2016-06-12 13:08  阅读 459 views 次 评论 0 条

原版由张戈发布,将其代码加入function.php后,部分主题会报错,报错信息如下:

Warning: preg_match_all() expects at least 3 parameters, 2 given in (后面这里每个人的不一样)

出错原因:
preg_match_all() 函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。
语法:

preg_match_all(pattern,subject,flags)

如上,应该有三个参数,张戈的js中少了第三个参数(实际为存储数组,具体可以去网上查查这个函数的详细讲解),随意补上即可
改进方法:
将代码中的:

if(!preg_match_all('/提交网址/u',$rs) && preg_match_all('/百度为您找到相关结果/u',$rs)){

修改为:

if(!preg_match_all('/提交网址/u',$rs,$mata) && preg_match_all('/百度为您找到相关结果/u',$rs,$matb)){
以下为改进后的版本的完整代码,直接加入function.php中即可
/**
* WordPress百度搜索自动推送、主动收录JS
**/
add_action( 'wp_footer', 'bdPushData', 999);
//检查百度是否已收录最新改进版本
if(!function_exists('baidu_check_record')){
  function baidu_check_record($url){
    global $wpdb;
    $post_id = ( null === $post_id ) ? get_the_ID() : $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(!preg_match_all('/提交网址/u',$rs,$mata) && preg_match_all('/百度为您找到相关结果/u',$rs,$matb)){
            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;
    }
  }
}
//输出百度自动推送js代码
if(!function_exists('bdPushData')){
  function bdPushData() {
    if ($_SERVER['HTTPS'] != "on") {
        $currentUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
    } else {
        $currentUrl = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
    }
    //判断是否是未收录页面,并且当前页面是否等于正规url地址(get_premalink)
    if(baidu_check_record(get_permalink()) == 0 && $currentUrl == get_permalink()) {
        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>";
      }
   }
}

历史上的今天:

本文地址:http://xiaohost.com/1450.html
版权声明:本文为原创文章,版权归 老牛 所有,欢迎分享本文,转载请保留出处!

发表评论


表情