我正在使用高级自定义字段(ACF)。如果字段为空,我想不显示ACF转发器字段<input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code">
。我将字段包装在div中,如果字段为空,则使用CSS写一个display = none,但我确信有更好的方法可以做到这一点。我的逻辑似乎不起作用。
the_sub_field('feature_image_post');
答案 0 :(得分:1)
if (! empty(get_sub_field('feature_image_post'))) {
echo '<div class="post-feature" style="display:block;">';
the_sub_field('feature_image_post');
echo '</div>';
}
就是这样。在这种情况下,get_sub_field('feature_image_post')
为空,它将跳过整个部分。
据我所知 - ACF中的the_
表示它会显示数据,因此您在此之前不需要echo
。
并且请务必检查您是否已使用echo
关闭;
,因为在示例中您没有。
答案 1 :(得分:1)
此处不需要其他声明。如果该字段尚未设置,则您根本不显示任何内容。
我的方法是使用get_sub_field()
并将结果作为条件的一部分分配给变量。
ACF中图像的默认返回值是一个值数组,所以我假设你拥有的是。
示例:
if ( $feature_image_post = get_sub_field( 'feature_image_post' ) ) {
echo '<div class="post-feature">';
printf( '<img src="%s" alt="%s" />', esc_url( $feature_image_post['url'] ), esc_attr( $feature_image_post['title'] ) );
echo '</div>';
}
要提出的最后一点是get_sub_field()
和the_sub_field()
之间的差异。在原始代码中,您尝试回显the_sub_field()
。 get_...
将返回一个值,而the_...
将输出该值,使echo
在该上下文中成为冗余。