WordPress如何自动将自定义文章类型的标题添加为文章标签
实现方案
你需要对现有代码做几处调整,核心是把固定标签替换为动态获取的文章标题,同时补充边界条件判断避免异常触发:
修改后的完整代码
function set_archive_tag_on_publish($post_id, $post) { // 跳过自动保存场景 if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } // 跳过后台修订版本 if (wp_is_post_revision($post_id)) { return; } // 仅对已发布的movies自定义文章类型生效 if ($post->post_type == 'movies' && $post->post_status == 'publish') { // 移除当前钩子,避免调用wp_set_post_tags时触发死循环 remove_action('save_post', 'set_archive_tag_on_publish'); // 将文章标题作为标签添加,第三个参数为true表示追加标签、不覆盖原有标签 wp_set_post_tags($post_id, $post->post_title, true); // 重新挂载钩子 add_action('save_post', 'set_archive_tag_on_publish'); } } add_action('save_post', 'set_archive_tag_on_publish');
核心修改点说明
- 替换了
wp_set_post_tags函数的第二个参数,从固定的'tag1, tag2, tag3'改为动态获取的文章标题属性$post->post_title - 新增了自动保存、修订版本的判断逻辑,避免误触发标签添加
- 新增了钩子临时移除/重新挂载的逻辑,避免调用标签更新接口时触发
save_post钩子导致死循环 - 如果需要仅保留文章标题作为唯一标签、删除原有其他标签,可以将
wp_set_post_tags的第三个参数改为false
内容的提问来源于stack exchange,提问作者The Real Truth
相关产品推荐
相关产品推荐

