Acf:get_field()返回FALSE

时间:2015-06-06 作者:user3574603

我创建了一个默认值为true的自定义真/假字段。我为不同的价值观设置了不同的帖子。但是,get\\u field()始终返回false:

<?php if( have_posts() ): while( have_posts() ): the_post(); ?>
            <?php global var_dump(get_field(\'display_featured_image\'));?>
<?php endwhile; endif ?>
显示的输出为:(bool)false

我已经检查并再次检查了字段名。如果该值设置为true,为什么会返回false?

2 个回复
SO网友:Hybrid Web Dev

您需要输入您试图获取字段的帖子的ID:例如

get_field(\'display_featured_image\', $post_id). 
在一个循环中,你可以

get_field(\'display_featured_image\', get_the_id());
ACF将字段数据存储在wp的meta\\u字段中,因此您甚至可以使用wp的内置元处理程序自己提取数据,例如:

get_post_meta( $post_id, \'acf_field_name\', true); // Use true for almost every case, as WP will return an array otherwise. 

SO网友:doublesharp

你有几个选择。最简单的方法是使用get_field( $field_key ) (使用ACF字段ID而不是meta\\u键)。这将选择正确的字段,而不考虑允许其访问默认值的位置规则。

如果必须使用meta键,则通常可以使用过滤器。不确定它的效率有多高(可以通过使用acf json缓存来缓解)。这还假设字段键是唯一的(否则必须根据位置规则进行筛选,位置规则可能可用,也可能不可用)。

add_filter( \'acf/load_value\', function( $value, $post_id, $field ){
    // get your field groups
    $groups = acf_get_field_groups();
    if ( !empty( $groups ) ){
        // loop over each group
        foreach ($groups as $group) {
            // load the fields for this group key
            $fields = acf_get_fields( $group[\'key\'] );
            if ( !empty( $fields ) ){
                // loop over the returned fields
                foreach ( $fields as $this_field ){
                    // if the name is a match, set the default value
                    if ( $this_field[\'name\'] == $field[\'name\'] ){
                        return $this_field[\'default_value\'];
                    }
                }
            }
        }
    }
    return $value;
}

结束

相关推荐

Acf:get_field()返回FALSE - 小码农CODE - 行之有效找到问题解决它

Acf:get_field()返回FALSE

时间:2015-06-06 作者:user3574603

我创建了一个默认值为true的自定义真/假字段。我为不同的价值观设置了不同的帖子。但是,get\\u field()始终返回false:

<?php if( have_posts() ): while( have_posts() ): the_post(); ?>
            <?php global var_dump(get_field(\'display_featured_image\'));?>
<?php endwhile; endif ?>
显示的输出为:(bool)false

我已经检查并再次检查了字段名。如果该值设置为true,为什么会返回false?

2 个回复
SO网友:Hybrid Web Dev

您需要输入您试图获取字段的帖子的ID:例如

get_field(\'display_featured_image\', $post_id). 
在一个循环中,你可以

get_field(\'display_featured_image\', get_the_id());
ACF将字段数据存储在wp的meta\\u字段中,因此您甚至可以使用wp的内置元处理程序自己提取数据,例如:

get_post_meta( $post_id, \'acf_field_name\', true); // Use true for almost every case, as WP will return an array otherwise. 

SO网友:doublesharp

你有几个选择。最简单的方法是使用get_field( $field_key ) (使用ACF字段ID而不是meta\\u键)。这将选择正确的字段,而不考虑允许其访问默认值的位置规则。

如果必须使用meta键,则通常可以使用过滤器。不确定它的效率有多高(可以通过使用acf json缓存来缓解)。这还假设字段键是唯一的(否则必须根据位置规则进行筛选,位置规则可能可用,也可能不可用)。

add_filter( \'acf/load_value\', function( $value, $post_id, $field ){
    // get your field groups
    $groups = acf_get_field_groups();
    if ( !empty( $groups ) ){
        // loop over each group
        foreach ($groups as $group) {
            // load the fields for this group key
            $fields = acf_get_fields( $group[\'key\'] );
            if ( !empty( $fields ) ){
                // loop over the returned fields
                foreach ( $fields as $this_field ){
                    // if the name is a match, set the default value
                    if ( $this_field[\'name\'] == $field[\'name\'] ){
                        return $this_field[\'default_value\'];
                    }
                }
            }
        }
    }
    return $value;
}

相关推荐