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

自定义文章类型Results发布时,自定义字段results_html添加前缀失败

问题分析与解决方案

你的代码有几个关键问题导致测试文本没显示,我帮你逐一排查并修正:

1. 钩子匹配错误

publish_post这个钩子仅针对默认的「post」文章类型生效,你的自定义文章类型是「Results」,应该使用publish_results钩子(格式为publish_{自定义文章类型slug}),这样才能精准触发目标类型文章的发布事件。

2. 缺少文章ID参数

get_field和update_field默认依赖当前循环的文章ID,但在发布钩子场景中,必须明确传入当前发布的文章ID,否则无法正确定位到目标文章的自定义字段。

3. 语法小疏漏

你代码里的get_field('results_html');;多了一个分号,虽然不会直接导致报错,但属于不必要的语法冗余,建议修正。


修正后的完整代码

function gr_add_class_div_to_results($post_id) {
    // 先校验当前文章类型是否为目标类型
    $post_type = get_post_type($post_id);
    if ($post_type !== 'results') {
        return; // 非目标类型直接终止执行
    }

    // 传入文章ID,精准获取自定义字段值
    $field_value = get_field('results_html', $post_id);
    
    if ($field_value) {
        // 在字段开头添加测试文本
        $updated_value = 'test' . $field_value;
        // 传入文章ID,更新目标字段
        update_field('results_html', $updated_value, $post_id);
    }
}
// 绑定针对自定义文章类型的发布钩子
add_action('publish_results', 'gr_add_class_div_to_results');

额外测试提示

  • 确认自定义文章类型的slug是否为results:可以在后台编辑该类型文章时,查看URL中的post_type=xxx参数,xxx就是对应的slug。
  • 测试时需触发发布动作:比如新建一篇「Results」文章并发布,或编辑已有文章后重新点击发布,这个钩子仅在发布事件触发时执行,不会自动对历史文章生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:45:19