当前位置: WordPress教程 > seo > 阅读正文

wordpress文章自动推送到百度

2021.4.9.   544 次   2162字

按照最新的百度站长平台规则, 想要自动推送到百度搜索, 需要在百度站长平台取得推送码

这个推送码是唯一的, 不再是以前的使用通用 js 代码就可以推送了, 这也意味着你必须先成为百度站长

成为百度站长

百度是国内最大的搜索引擎, 成为百度站长的好处能更方便的推送, 是很有必要的

点击跳转到百度站长平台, 然后添加站点, 此时就可以在站点管理–>”普通收录”中找到自动提交收录的代码

收录代码有多种类型, 此时我们选择php推送示例, 大概是这样的

$urls = array(
    'http://www.example.com/1.html',
    'http://www.example.com/2.html',
);
$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 $result;

你不需要拷贝我的代码, 百度已经给你生成好了, 你只需要找到它并复制

接下来就是推送了, 我们把代码放在funcitons.php中, 并让它在文章更新后自动调用就可以了

自动推送到百度

接下来, 我们在funtions.php中加入如下代码

这里需要了解一个钩子, publish_post() , 这个函数会在文章发布/更新时自动调用

add_action( 'publish_post', 'send_baidu' );
function send_baidu($postid){
    //已提交过的文章避免重复提交
    if(get_post_meta($postid,'Baidusubmit',true) == 1) return;
    //否则需要提交
    $urls = array(
        get_permalink($postid), //这里动态获取发布的文章
    );
    $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 $result;  把这个删掉, 后面都是可选项
	date_default_timezone_set('Asia/Shanghai');  //设置时区, 否则获取时间错误
	$time = time();
	$file = dirname(__FILE__).'/baiduSubmit.txt';
	if(date('Y-m-d',filemtime($file)) != date('Y-m-d')){
		$handle = fopen($file,"w");
	}else{
		$handle = fopen($file,"a");
	}
	$resultMessage="";
	if($result['message']){
		$resultMessage= date('Y-m-d H:i:s',$time)."\n提交失败".$result['message'].":\n网址:".get_permalink($postid)."\n\n".$result;
	}
	if($result['success']){
	    add_post_meta($postid,'Baidusubmit',1,true);//给文章添加一个头信息,值为1
		$resultMessage= date('Y-m-d H:i:s',$time)."\n提交成功".":".get_permalink($postid)."\n\n";
	}
	fwrite($handle,$resultMessage);
	fclose($handle);
}

为了防止更新时也提交一次, 我们使用add_post_meta给已添加的文章增加一个头信息, 列名和属性值其实都无所谓, 就是一个标记而已, 在推送成功后就添加此标记, 下载推送前先判断标记, 如果已经存在则拒绝再次推送

重复并频繁的推送官方也没说有什么坏处, 如果你觉得多推送比较好, 文章更新也推送, 可以把对应代码去掉

此外, 把推送成功或失败的消息记录在一个文件中, 这个也是可选的, 在百度开发者平台本身也有统计.

也就是说, 上面只是示例, 你直接拷贝百度给出的代码, 并修改推送文章链接, 即get_permalink($postid)动态获取发布的文章url也是很ok的.

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群