当两个ACF子字段均为空时隐藏WordPress父容器的实现求助
解决WordPress ACF字段容器的显示逻辑问题
没问题,我帮你调整这个显示逻辑~ 你现在的代码里,不管两个字段是否为空,.header-contact这个div都会被渲染出来,只是空字段对应的内容不显示。要实现只要任一字段有内容就显示容器,两个都空就隐藏容器,我们只需要把整个div包裹在一个判断条件里就行。
修改后的代码:
<?php // 先获取两个字段的值,方便后续判断与复用 $header_tel = get_field('header_tel', 'option'); $header_email = get_field('header_email', 'option'); // 判断至少一个字段有内容时,才渲染整个容器 if ($header_tel || $header_email) : ?> <div class="header-contact"> <?php if($header_tel): ?> <p>Tel No: <a href="tel:<?php echo esc_attr($header_tel); ?>"><?php echo esc_html($header_tel); ?></a></p> <?php endif; ?> <?php if($header_email): ?> <a href="mailto:<?php echo esc_attr($header_email); ?>"><?php echo esc_html($header_email); ?></a> <?php endif; ?> </div> <?php endif; ?>
代码说明:
- 提前获取两个字段的值,既避免了重复调用
get_field的冗余,也让判断逻辑更直观。 - 使用
||逻辑运算符实现“任一字段有值即显示容器”的要求:只要$header_tel或$header_email其中一个不为空,就会渲染整个.header-contact容器;只有当两个都为空时,容器才会被完全隐藏。 - 额外加上
esc_attr()和esc_html()做内容转义,这是WordPress开发的安全最佳实践,能有效避免XSS风险,同时让代码更规范。
这样修改后,就能完美实现你想要的显示逻辑啦~
内容的提问来源于stack exchange,提问作者user1961395
相关产品推荐
相关产品推荐

