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

作者: 站长 上传时间: 浏览: N/A 下载: N/A 格式: N/A 评分: N/A

原版由张戈发布,将其代码加入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 "";
}
}
}

Leave a Comment