WordPress文章链接发送给百度收录
为了更好的让百度索引博客页面,我一直采用百度站长提供的普通收录工具,主动推送新文章网址。
如上图所示,在“资源提交 》普通收录”页面获取推送接口地址和token。
发布文章之后用 Postman 推送文章网址,每天默认只能推送地址3000个。上图中推送接口的返回结果remain=2998,表示当天还可以推2998个。
{
"remain": 2998,
"success": 1
}
程序员不能忍受重复的工作,我必须让这个活儿自动化。思路很简单:在文章状态变化的函数上挂载自定义函数,当文章发布后,触发函数调用HTTP模块提交网址。
WordPress 提供了通用的 HTTP POST 函数 wp_safe_remote_post,定义在 wp-includes/http.php:
function wp_safe_remote_post( $url, $args = array() ) {
$args['reject_unsafe_urls'] = true;
$http = _wp_http_get_object();
return $http->post( $url, $args );
}
wp_safe_remote_post() 的使用范例如下:
$options = array();
$options['timeout'] = 10;
$options['body'] = array(
'title' => $title,
'url' => get_permalink( $ID ),
'blog_name' => get_option( 'blogname' ),
'excerpt' => $excerpt,
);
$response = wp_safe_remote_post( $trackback_url, $options );
add_action() 是 WordPress 核心代码执行期间或特定事件发生时启动的钩子函数,就是通过 add_action() 将函数连接到指定 action 上,调用用方法如下:
add_action( string $tag, callable $function_to_add, int $priority = 10,int $accepted_args = 1 )
$tag:必填(字符串)。$function_to_add 所挂载的动作(action)的名称。
$function_to_add:必填(回调)。你希望挂载的函数的名称。
$priority:可选(整型)。用于指定与特定的动作相关联的函数的执行顺序。数字越小,执行越早,默认值 10 。
$accepted_args:可选(整型)。挂钩函数所接受的参数数量。
add_action()函数定义在 wp-includes/plugin.php 文件中:
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
return add_filter($tag, $function_to_add, $priority, $accepted_args);
}
WordPress 提供了监控文章状态变化的函数transition_post_status,将自定义的函数挂载在这个函数上即可。我的 WordPress 版本是5.8,采用主题 Nisarg,挂载的notice_new_post_url函数定义在/wp-content/themes/nisarg/functions.php里,代码如下所示:
/**
* 文章发布后,将链接通知给百度站长
*
* @param int $new_status the new status of post
* @param int $old_status the old status of post
* @param object $post the post object
* @return response http post response
*/
function notice_new_post_url( $new_status, $old_status, $post ) {
if ( $new_status == 'publish' && $old_status != 'publish' ) {
$target_url = "http://data.zz.baidu.com/urls?site=https://www.yourdomain.com&token=yourtoken";
$post_url = get_permalink($post->ID);
$options = array();
$options['timeout'] = 3;
$options['body'] = $post_url;
$response = wp_safe_remote_post( $target_url, $options );
return $response;
}
}
add_action( 'transition_post_status', 'notice_new_post_url', 10, 3);
代码
用于判断文章处于发布状态,避免其他状态也推送数据。$new_status == 'publish' && $old_status != 'publish'
本文链接:https://www.codingbrick.com/archives/870.html
特别声明:除特别标注,本站文章均为原创,转载请注明作者和出处倾城架构,请勿用于任何商业用途。