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

求助:WordPress无需插件自动为tech-video自定义文章添加video标签

解决WordPress自定义文章自动打标签问题

首先你的代码存在几个关键问题,以下是修正后的代码,直接放到主题的functions.php文件里即可:

/* 自动为tech-video类型文章添加video标签 */
add_action('save_post_tech-video', 'auto_add_video_tag_to_tech_video', 10, 2);
function auto_add_video_tag_to_tech_video($post_id, $post) {
    // 跳过自动保存和修订版内容
    if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
        return;
    }

    // 双重确认当前文章类型为tech-video
    if ($post->post_type !== 'tech-video') {
        return;
    }

    // 为文章添加video标签,第三个参数是标签对应的分类法(默认标签分类法为post_tag)
    wp_set_post_terms($post_id, 'video', 'post_tag', true);
}

原代码的问题解析:

  • 钩子名称错误:你使用的publish_tech_video并非WordPress有效钩子,针对自定义文章类型的保存操作,正确钩子是save_post_{post_type},这里的{post_type}对应你的自定义文章类型slugtech-video,所以钩子名应为save_post_tech-video。
  • wp_set_post_terms参数混淆:该函数的第二个参数是要添加的标签名(你需要的是video),第三个参数是分类法标识,默认标签的分类法是post_tag,你之前把标签名和分类法搞反,还错误传入了tech-video作为标签内容。
  • 未过滤无效触发场景:WordPress在自动保存草稿、创建修订版时都会触发保存钩子,不加判断会导致代码重复执行,甚至引发异常。

如果需要更通用的逻辑(比如后续给多个自定义文章类型加标签),可以用save_post通用钩子,在函数内判断文章类型:

add_action('save_post', 'auto_add_video_tag', 10, 2);
function auto_add_video_tag($post_id, $post) {
    if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
        return;
    }

    // 指定需要自动加标签的自定义文章类型列表
    $target_post_types = ['tech-video'];
    if (!in_array($post->post_type, $target_post_types)) {
        return;
    }

    wp_set_post_terms($post_id, 'video', 'post_tag', true);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:45:52