You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress选择Poetry分类插入新文章时修改post-name的单次触发钩子函数

WordPress新文章首次发布时修改slug的钩子选择

要实现仅在首次发布新文章时触发一次的逻辑,最合适的钩子是wp_insert_post。这个钩子在文章被插入或更新时触发,通过其参数可以精准控制仅处理首次发布的新文章,同时满足你修改Poetry分类文章slug的需求。

实现代码示例

add_action('wp_insert_post', 'set_poetry_random_slug', 10, 3);
function set_poetry_random_slug($post_id, $post, $update) {
    // 跳过自动保存、修订版,仅处理已发布的文章
    if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id) || $post->post_status !== 'publish') {
        return;
    }

    // 仅处理新增文章,跳过已有文章的更新操作
    if ($update) {
        return;
    }

    // 检查文章是否属于Poetry分类(替换为你的分类slug/ID)
    $target_category = 'poetry';
    if (!has_category($target_category, $post_id)) {
        return;
    }

    // 生成7位随机数字slug
    $random_slug = mt_rand(1000000, 9999999);

    // 临时移除钩子避免无限循环,更新文章slug
    remove_action('wp_insert_post', 'set_poetry_random_slug', 10);
    wp_update_post([
        'ID' => $post_id,
        'post_name' => $random_slug
    ]);
    add_action('wp_insert_post', 'set_poetry_random_slug', 10, 3);
}

关键说明

  • wp_insert_post的第三个参数$update为false时,表示这是一篇新插入的文章,以此确保逻辑仅触发一次。
  • 加入自动保存、修订版的判断,避免钩子在草稿自动保存等场景下误触发。
  • 通过has_category校验文章分类,只对Poetry分类的文章生效。
  • 修改slug时临时移除钩子,防止wp_update_post再次触发wp_insert_post造成无限循环。

内容的提问来源于stack exchange,提问作者Ghost

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 02:47:25