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

WordPress中ACF布尔字段联动动态下拉选项问题排查

排查ACF动态下拉字段代码错误及修复方案

代码中的核心错误

  • get_field()调用逻辑错误:在acf/load_field钩子中,直接调用get_field('fruits_selection')无法获取当前编辑文章的字段值——缺少当前文章ID参数,新文章未保存时更是无法读取到任何值。
  • array_push用法完全错误:array_push的第一个参数必须是要修改的目标数组,返回值是数组的新长度,而非数组本身。你写成$choices = array_push(...)会把$choices变成数字类型,后续is_array($choices)判断会返回false,导致选项无法添加。
  • ACF下拉选项格式错误:ACF下拉字段要求选项是[键 => 显示文本]的键值对结构,你把键和文本合并成单个字符串,不符合字段规范。
  • 未处理新文章场景:创建新文章时无字段值,原代码未做空值处理,容易触发报错破坏后台AJAX响应。

修正后的代码

function acf_load_platform_field_choices( $field ) {
    // 重置选项
    $field['choices'] = array();
    $choices = array();
    
    // 获取当前编辑的文章ID,适配新/旧文章编辑场景
    $post_id = isset($_GET['post']) ? intval($_GET['post']) : 0;
    
    // 传入文章ID获取字段值,新文章时会返回false
    $fruits = get_field('fruits_selection', $post_id);
    $veggies = get_field('veggies_selection', $post_id);
    $items = get_field('items_selection', $post_id);
    
    if( $fruits ) {
        $choices = array_merge($choices, array(
            'apple-bundles' => 'Mix of apples',
            'banana-bundles' => 'Bananas basket',
            'kiwi-set' => 'Tasty kiwi set'
        ));
    }

    if( $veggies ) {
        $choices = array_merge($choices, array(
            'potato-bag' => '10lbs Potato Bag'
        ));
    }

    if( $items ) {
        $choices = array_merge($choices, array(
            'basket' => 'Wooden basket'
        ));
    }
  
    // 将整理好的键值对赋值给字段选项
    if( is_array($choices) && !empty($choices) ) {
        $field['choices'] = $choices;
    }
    
    return $field;
}

add_filter('acf/load_field/name=platform', 'acf_load_platform_field_choices');

额外说明

  • 新增$post_id获取逻辑,确保能读取当前编辑文章的字段状态,新文章时$post_id为0,get_field返回false,对应选项不会被添加。
  • 用array_merge替代错误的array_push,正确合并不同条件下的选项数组。
  • 修正ACF下拉选项的键值对结构,符合字段要求。
  • 保存时的JSON响应错误是原代码报错(如array_push参数错误)导致输出PHP错误信息,破坏了后台AJAX响应格式,修正代码后该问题会自动解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:30:56