建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

Three主题添加百度实时推送功能(保留更新主题时functions.php里的自定义代码的办法)

GG网络技术分享 2025-03-18 16:12 0


Three主题添加百度实时推送功能

最近在很多博客上都看到有关于WordPress集成百度实时推送的功能,虽然不知道具体效果如何,但是我想增加这个功能应该总不会是坏事吧,所以就给自己的站点添加试试,以便下次更新Three主题的时候集成进去。

具体操作步骤如下:

1、获取token

我们只需要登录百度站长平台》网页抓取》点击【链接提交】,在右边的页面中的“链接提交”中选择需要添加百度实时推送功能的站点,然后就可以看到这个站点的token值了。

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

2、修改代码,添加百度实时推送功能

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

  1. /**

  2. * WordPress发布文章主动推送到百度,加快收录保护原创【WordPress通用方式】

  3. * 文章地址:http://zhangge.net/5041.html

  4. */

  5. if(!function_exists(\'Baidu_Submit\')){

  6. function Baidu_Submit($post_ID) {

  7. $WEB_TOKEN = \'xxxxxxxxxxx\'; //这里请换成你的网站的百度主动推送的token值

  8. $WEB_DOMAIN = get_option(\'home\');

  9. //已成功推送的文章不再推送

  10. if(get_post_meta($post_ID,\'Baidusubmit\',true) == 1) return;

  11. $url = get_permalink($post_ID);

  12. $api = \'http://data.zz.baidu.com/urls?site=\'.$WEB_DOMAIN.\'&token=\'.$WEB_TOKEN;

  13. $request = new WP_Http;

  14. $result = $request->request( $api , array( \'method\' => \'POST\', \'body\' => $url , \'headers\' => \'Content-Type: text/plain\') );

  15. $result = json_decode($result[\'body\'],true);

  16. //如果推送成功则在文章新增自定义栏目Baidusubmit,值为1

  17. if (array_key_exists(\'success\',$result)) {

  18. add_post_meta($post_ID, \'Baidusubmit\', 1, true);

  19. }

  20. }

  21. add_action(\'publish_post\', \'Baidu_Submit\', 0);

  22. }

现在我们发布新文章,文章地址就会被主动推送到百度。被成功推送的文章,将自动出现如下自定义栏目:

为避免代码重复推送的尴尬,如果你需要更新文章再次推送数据,那么在保存/更新文章之前,删除或修改这个自定义栏目即可再次被推送。

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

特别说明:

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

  1. /**

  2. * WordPress发布文章主动推送到百度,加快收录保护原创【file_get_contents方式】

  3. * 文章地址:http://zhangge.net/5041.html

  4. */

  5. if(!function_exists(\'Baidu_Submit\')) {

  6. function Baidu_Submit($post_ID) {

  7. $WEB_TOKEN=\'xxxxxxxxx\'; //这里换成你的网站的百度主动推送的token值

  8. $WEB_DOMAIN=get_option(\'home\');

  9. //已成功推送的文章不再推送

  10. if(get_post_meta($post_ID,\'Baidusubmit\',true) == 1) return;

  11. $url = get_permalink($post_ID);

  12. $api = \'http://data.zz.baidu.com/urls?site=\'.$WEB_DOMAIN.\'&token=\'.$WEB_TOKEN;

  13. $data = array (

  14. \'http\' => array (

  15. \'method\' => \'POST\',

  16. \'header\'=> \"Content-Type: text/plain\",

  17. \"Content-Length: \".strlen($url).\"rn\",

  18. \'content\' => $url

  19. )

  20. );

  21. $data = stream_context_create($data);

  22. $result = file_get_contents($api, false, $data);

  23. $result = json_decode($result,true);

  24. //如果推送成功则在文章新增自定义栏目Baidusubmit,值为1

  25. if (array_key_exists(\'success\',$result)) {

  26. add_post_meta($post_ID, \'Baidusubmit\', 1, true);

  27. }

  28. }

  29. add_action(\'publish_post\', \'Baidu_Submit\', 0);

  30. }

文中涉及的技术和代码均来自于张戈博主分享的《WordPress发布文章主动推送到百度,加快收录保护原创》。

保留更新主题时functions.php里的自定义代码的办法

WordPress主题中的functions.php是很重要的一个文件,WordPress主题很多很多功能都是写入到这个文件里,是功能得以实现;

针对主题做的一些功能变更,需要向这个文件里写入代码,而一款优雅的WordPress主题除了发布之外还要有更新,而一旦更新,functions.php文件也会被覆盖,那之前添加到这里的功能代码也就不存在了,这里有一个解决办法,可以解除各位的后顾之忧,不会再出现更新主题版本而忘记备份functions.php文件而出现的尴尬。

解决思路就是:把每个功能的代码,都做成一个WordPress的插件,然后通过WordPress的插件功能,上传-激活,这样可以保证功能的延续性,而又不会出现functions.php文件被覆盖的问题。


具体步骤:

把上面的代码自己另存为一个php文件,记住是UTF-8编码,然后放进wp-content/plugins文件夹,对,直接放进插件文件夹,然后去插件中心看看,如图:

2016032017374031

一个插件就这么出来了,虽然里面没有什么实际代码,但是他就是一个插件,对网站开始起作用了,和在functions文件里面加代码一样。

每个功能都可以按照上面的方式,写成一个简单的插件,如果如果功能很少,这办法很合适,如果增加了超过5个的功能,还是备份functions.php文件比较方便。

文章来源:明月登楼。

标签:

提交需求或反馈

Demand feedback