如何实现仅当Advanced Custom Fields上传图片时显示整个div内容?
解决ACF图片存在时才显示指定Div的问题
看了你的代码,问题出在条件判断的语法上——你写的if( $image_l ) ?>没有用大括号包裹后续的HTML内容,导致PHP只会执行这一行判断,后面的<div>不管图片是否存在都会直接输出,完全没起到条件控制的作用。
修正后的代码示例
下面是调整后的代码,确保只有当指定的ACF图片字段有值时,才会渲染整个widget-accessories-page容器:
<?php $image_l = get_field('accessories-image-large'); $image_s = get_field('accessories-image-small'); $size = 'full'; // 这里可以根据需求调整判断逻辑: // || 表示只要其中一张图片存在就显示;&& 表示两张都存在才显示 if( $image_l || $image_s ) { ?> <div class="widget-accessories-page"> <div id="anchor-accessories-page"></div> <div class="widget-accessories-t..."> <!-- 可选:在这里输出图片内容 --> <?php if($image_l) { // 输出大图,wp_get_attachment_image会自动生成标准img标签 echo wp_get_attachment_image( $image_l, $size ); } ?> <?php if($image_s) { echo wp_get_attachment_image( $image_s, $size ); } ?> <!-- 你的其他页面内容继续写在这里 --> </div> </div> <?php } ?>
关键说明
- 条件包裹逻辑:用
{ ?>和<?php }把需要控制的所有HTML内容包裹起来,这样PHP会先判断条件是否成立,再决定是否渲染里面的内容。 - 灵活调整判断规则:如果要求必须两张图片都上传才显示容器,就把
||换成&&即可。 - ACF字段值的有效性:
get_field获取图片字段时,不管你设置的是返回「附件ID」还是「图像数组」,只要字段有上传内容,变量就会是非空值,直接用if($变量)判断就有效。
内容的提问来源于stack exchange,提问作者mmhnyc1220
相关产品推荐
相关产品推荐

