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



我有一个字段my-field

my-field的类型为选择

字段属性Allow multiple已启用。

字段的可用值为

  • 值-1
  • 值-2
  • 值-3

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

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功能设置选择字段类型的选定多个值?

或者您也可以通过此方法使用。

// Save a checkbox or select value.
$field_name = "my-field";

$value = array("value-1", "value-2", "value-3");

update_field( $field_name , $value, 'option' )

有关更多信息,请查看update_field文档

我发现了解决问题的方法。

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

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

然后我用这种方式给update_field打了

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

和字段已成功更新。

最新更新