如何以编程方式为 Select 字段类型设置多个选定值?

How to set multiple selected values for Select field type programmatically?

我有一个字段my-field

my-field 的类型是 Select

字段 属性 Allow multiple 已启用。

字段的可用值是

如果我手动更新字段然后调用函数

get_field( 'my-field', 'option' );

我有

[
    0 =>
        [
            'value' => 'value-1',
            'label' => 'value-1',
        ],
    1 =>
        [
            'value' => 'value-2',
            'label' => 'value-2',
        ],
];

尝试 1

如果我尝试更新字段 - 我会这样调用函数 update_field

$update_result_multiple = update_field(
    'my-field',
    [
        0 =>
            [
                'value' => 'value-1',
                'label' => 'value-1',
            ],
        1 =>
            [
                'value' => 'value-2',
                'label' => 'value-2',
            ],
        2 =>
            [
                'value' => 'value-2',
                'label' => 'value-3',
            ],
    ],
    'option'
);

我得到 update_result_multiplefalse 并且所有值都未选中

尝试 2

如果我尝试这种方式 - 所选值已成功更新。

$update_result = update_field(
    'my-field',
    [
        'value' => 'value-1',
        'label' => 'value-1',
    ],
    'option'
);

问题是

我无法通过设置选定的多个值来更新 Select 字段。

我只能手动设置选定的多个值。 但是不能用 update_field 函数

问题是

如何使用 update_field 函数为 Select 字段类型设置选定的多个值?

我找到了解决问题的方法。

我用第三个参数调用了 get_fields 格式化值 = false.

这给了我理解正确格式的线索。

然后我就这样调用了update_field

$update_result_multiple = update_field(
    'my-field',
    ['value-1', 'value-2', 'value-3'],
    'option'
);

字段已成功更新。

或者你也可以用这个方法。

// Save a checkbox or select value.
$field_name = "my-field";
    
$value = array("value-1", "value-2", "value-3");
    
update_field( $field_name , $value, 'option' )

更多信息请查看the update_field documentation