0°

WordPress主动推送到百度

百度站长自动提交中有一种推送方式为主动推送,不过实现的方法有几种,给出的代码也不完全,需要用户补充,这里分享的是百度主动推送WordPress版的通用代码,完全是实时推送。

WordPress主动推送到百度插图

PS:一个百度站长账号有多个站点,这几个站点的token值都是一样的。

WordPress百度主动推送代码1【WordPress通用方式】

这个方法不需要在意官方说的是否存在curl_init() 函数,适合小白,直接放上去就能够实现主动推送的功能。将以下代码加入到你的function文件中即可:

/*
* 主动实时推送到百度代码 WordPress如何添加百度实时推送功能教程【WordPress通用方式】
*/
if(!function_exists('Baidu_Submit')){
 function Baidu_Submit($post_ID) {
 $WEB_TOKEN = 'xxxxxxxxxxx'; //这里请换成你的网站的百度主动推送的token值
 $WEB_DOMAIN = get_option('home');
 //已成功推送的文章不再推送if(get_post_meta($post_ID,'Baidusubmit',true) == 1) return;
 $url = get_permalink($post_ID);
 $api = 'http://data.zz.baidu.com/urls?site='.$WEB_DOMAIN.'&token='.$WEB_TOKEN;
 $request = new WP_Http;
 $result = $request->request( $api , array( 'method' => 'POST', 'body' => $url , 'headers' => 'Content-Type: text/plain') );
 $result = json_decode($result['body'],true);
 //如果推送成功则在文章新增自定义栏目Baidusubmit,值为1if (array_key_exists('success',$result)) {
 add_post_meta($post_ID, 'Baidusubmit', 1, true);
 }
 }
 add_action('publish_post', 'Baidu_Submit', 0);
}

添加之后在随便发一篇文章,再去百度后台看看是否是有成功自动推送一篇文章的记录吧!

WordPress百度主动推送代码2【curl_init方式】

把以下代码中的token值(xxxxxxxxxxx)改为我们第一步获取的token值(其他的不用修改),然后把这些代码添加到主题目录下的 functions.php 文件最后一个?>之前即可。

/*
* 主动实时推送到百度代码 WordPress如何添加百度实时推送功能教程【curl_init方式】
*/
if(!function_exists('Baidu_Submit') && function_exists('curl_init')) {
    function Baidu_Submit($post_ID) {
        $WEB_TOKEN='xxxxxxxxx';  //这里换成你的网站的百度主动推送的token值
        $WEB_DOMAIN=get_option('home');
        //已成功推送的文章不再推送
        if(get_post_meta($post_ID,'Baidusubmit',true) == 1) return;
        $url = get_permalink($post_ID);
        $api = 'http://data.zz.baidu.com/urls?site='.$WEB_DOMAIN.'&token='.$WEB_TOKEN;
        $ch  = curl_init();
        $options =  array(
            CURLOPT_URL => $api,
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => $url,
            CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
        );
        curl_setopt_array($ch, $options);
        $result = json_decode(curl_exec($ch),true);
        //如果推送成功则在文章新增自定义栏目Baidusubmit,值为1
        if (array_key_exists('success',$result)) {
            add_post_meta($post_ID, 'Baidusubmit', 1, true);
        }
    }
    add_action('publish_post', 'Baidu_Submit', 0);
}

Ps:虽然,主动推送的各种方法都支持一次推送多条数据,从我个人的经验来看,对于老文章没必要再次推送,频繁推送容易导致百度“翻脸”!

WordPress百度主动推送代码3【file_get_contents 方式】

如果按以上步骤正确操作后,在发布新文章时自定义栏目中不会出现我们期望的baidusubmit,说明实时推送给百度不成功,说明所使用的主机的 curl_exec()函数被禁用了。这个时候,我们只需要把以下代码替换掉第二步的代码即可。

/*
* 主动实时推送到百度代码 WordPress如何添加百度实时推送功能教程【file_get_contents 方式】
*/
if(!function_exists('Baidu_Submit')) {
    function Baidu_Submit($post_ID) {
        $WEB_TOKEN='xxxxxxxxx';  //这里换成你的网站的百度主动推送的token值
        $WEB_DOMAIN=get_option('home');
        //已成功推送的文章不再推送
        if(get_post_meta($post_ID,'Baidusubmit',true) == 1return;
        $url = get_permalink($post_ID);
        $api = 'http://data.zz.baidu.com/urls?site='.$WEB_DOMAIN.'&token='.$WEB_TOKEN;
        $data = array (
            'http' => array (
                'method' => 'POST',
                'header'=> "Content-Type: text/plain",
                "Content-Length: ".strlen($url)."rn",
                'content' => $url
            )
        );
        $data = stream_context_create($data);
        $result = file_get_contents($api, false, $data);
        $result = json_decode($result,true);
        //如果推送成功则在文章新增自定义栏目Baidusubmit,值为1
        if (array_key_exists('success',$result)) {
            add_post_meta($post_ID, 'Baidusubmit'1true);
        }
    }
    add_action('publish_post''Baidu_Submit'0);
}

Ps:file_get_contents 的运行效率应该是略低于curl的,不过就推送一条数据,就基本没有差别啦!如果你使用第一种方式没有成功,那么就试试 file_get_contents 方式吧!

WordPress百度主动推送代码4【WP BaiDu Submit免插件

免去安装WP BaiDu Submit插件的实现了WordPress更新文章实时推送到百度新策略!很多人都还是想要的,因为插件的确是越少越好了。将下面的代码添加到你主题的functions.php中去,并替换相关API即可:

/*
* 主动实时推送到百度代码 WordPress如何添加百度实时推送功能教程 【WP BaiDu Submit免插件】
*/
function mee_post_baidu($post_id,$post){
$PostUrl = get_permalink($post_id);
$urls=array($PostUrl);
$api = ‘你的api调用地址’;
$ch = curl_init();
$options = array(
$api,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => implode(”
“, $urls),
array(‘Content-Type: text/plain’),
);
$ch, $options);
curl_exec($ch);
add_action(‘publish_post’, ‘mee_post_baidu’);

替换上面的api地址为你自己的即可!

现在发布新文章,文章地址将会被主动推送到百度。被成功推送的文章,将自动出现如下自定义栏目,从而避免代码重复推送的尴尬,如果你需要更新文章再次推送数据,那么删除或修改这个自定义栏目即可再次被推送。

baidusubmit3

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论