WordPress文章链接发送给百度收录

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'用于判断文章处于发布状态,避免其他状态也推送数据。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注