我需要在高级自定义字段插件(ACF)中的WordPress中按字段名称获取字段键。
该字段已分配给帖子。我在帖子的循环中,我想以编程方式使用字段名称获取字段键。这是因为我正在创建一个表单,其中字段名称'options'将保持不变,但在select中将有不同的选项。
我正在循环一个自定义帖子类型并期望将字段“选项”分配给帖子(每个帖子都有唯一的选项,因此将有一个唯一的字段键,所以我不能只使用字段键这将被硬编码为可能的另一个帖子选项)...
我在帖子的循环中应该包含自定义字段“选项”,所以我应该能够使用帖子ID和自定义字段名称来查找字段键吗?
编辑: 我发现了这个:https://gist.github.com/mcguffin/81509c36a4a28d9c682e
但它似乎不起作用?
答案 0 :(得分:1)
正确的方法是使用acf_maybe_get_field
函数,就像这样:
acf_maybe_get_field( 'field_name', false, false );
自变量为:field name
,post id
(默认为当前帖子)和最重要的strict
,默认为true
,但我们将其设置为 false
在此处获取字段对象,即使该字段尚不存在。
答案 1 :(得分:0)
我认为从不同的角度解决问题会更容易。
您可以在每个帖子的选择字段中过滤选项。见https://www.advancedcustomfields.com/resources/dynamically-populate-a-select-fields-choices/
function acf_load_option_field_choices( $field ) {
global $post;
$current_id = $post->ID;
switch ( $current_id ) {
case 101: //Post ID 101
$field[ 'choices' ] = array(
'ferrari' => 'Ferrari',
'lambo' => 'Lambo',
'toyota' => 'Toyota',
'volvo' => 'Volvo'
);
break;
case 202: // Post ID 202
$field[ 'choices' ] = array(
'youtube' => 'Youtube',
'facebook' => 'Facebook',
'twitter' => 'Twitter',
'stackoverflow' => 'Stack Overflow'
);
break;
}
// return the field
return $field;
}
add_filter( 'acf/load_field/name=options', 'acf_load_color_field_choices' );
此时您可以从全局选项或任何您喜欢的地方提取选项,它们不需要进行硬编码。这意味着繁重的提升是在之前完成的,然后在循环中只是循环遍历选项,就像普通的ACF字段一样。