使用 WordPress Rest API 发布文章,发布完成之后做操作的钩子

使用 WordPress Rest API 发布文章,发布完成之后做操作的钩子

我有2个(或多个) WordPress 的站点,使用C站点调用A站点的 Rest API 发布文章(已经实现),接下来我需要在文章发布之后做一些操作,比如自动添加已有标签功能。

起初我用的是 save_post 这个钩子,但这个只能在后台点更新文章的时候才会自动添加标签,也就是需要按钮触发,而我是使用 API 发布文章的,无法触发 save_post 钩子。

我上网找很久,也问了 ChatGPT,之前提供给我的是 rest_after_insert_post 这个钩子,我调试半天也没生效。

最后经过折腾发现 wp_insert_post 这个钩子可以实现,得注意参数问题。这里把我的自动添加标签的代码附上:

/**
 * 自动给文章添加系统存在的标签
 *
 * @param $post_id
 * @param $post
 * @param $update
 *
 * @author 云轩
 */
function custom_add_tags($post_id, $post, $update)
{
    // 要排除的分类ID
    $except_category_id = 951;

    // 检查当前文章是否不属于分类ID
    if (!has_category($except_category_id, $post_id)) {
        $tags = get_tags(array('hide_empty' => false));
        $post_content = get_post($post_id)->post_content;

        if ($tags) {
            foreach ($tags as $tag) {
                // 如果文章内容出现了已使用过的标签,自动添加这些标签
                if (strpos($post_content, $tag->name) !== false) {
                    wp_set_post_tags($post_id, $tag->name, true);
                }
            }
        }
    }
}
add_action('wp_insert_post', 'custom_add_tags', 10, 3);
PHP
点赞

发表回复

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