在查询中获取 ACF post 元值

Get ACF post meta value in query

我想将 ACF 自定义字段的值添加到插件中以缩小查询范围。

这里是我为了检索值而创建的函数:

function vayvo_elements_post_difficulty(){
$post_meta = the_field( array( 
    'meta_key'=> 'difficulty',
    'hide_empty' => false,
));

if ( ! empty( $post_meta ) && ! is_wp_error( $post_meta ) ){
    foreach ( $post_meta as $meta_value ) {
        $options[ $meta_value->string ] = $post->meta_value;
    }
    return $options;
}

这里是显示它的代码:

enter       $this->add_control(
        'progression_post_difficulty',
        [
            'label' => esc_html__( 'Narrow by difficulty', 'progression-elements-vayvo' ),
            'description' => esc_html__( 'Choose a difficulty to display posts', 'progression-elements-vayvo' ),
            'label_block' => true,
            'multiple' => true,
            'type' => Controls_Manager::SELECT2,
            'options' => vayvo_elements_post_difficulty(),
        ]
    );

不幸的是,我可以在查询中看到新的参数,但完全是空的,即使我有关于此 meta_key 的帖子也是如此。

有人有想法吗?

此致, 克莱门特

我不太确定我是否遵循。但是根据我的理解,您错误地使用了 the_field 函数,请参阅 documentation here.

您应该能够简单地从 get_field 获取字段值并禁用值格式化。

$this->add_control( 'progression_post_difficulty', [
    'label' => esc_html__( 'Narrow by difficulty', 'progression-elements-vayvo' ),
    'description' => esc_html__( 'Choose a difficulty to display posts', 'progression-elements-vayvo' ),
    'label_block' => true,
    'multiple' => true,
    'type' => Controls_Manager::SELECT2,
    'options' => get_field( 'difficulty', false, false ) ?: [],
] );