我正在使用Advanced Custom Fields
建立一个Wordpress网站。所以现在我只想显示这些字段,如果它们“存在”,例如如果他们有内容。我做了以下条件声明:
$casemodule = get_field('case_page_instore');
if( $casemodule ) : ?>
<section class="block">
<h2><?php echo $casemodule['case_header'] ?></h2>
<p><?php echo $casemodule['case_subtext'] ?></p>
</section>
<?php endif; ?>
非常好,如果case_header
和case_subtext
字段为空,则不会(显然)显示它们,但是由于某种原因,<section>
标签始终可见,自从我按照ACF页上的说明进行操作以来,这很奇怪。
有人可以告诉我发生了什么事吗?
更新
我尝试做var_dump($casemodule)
,结果是:
array(2) { ["case_header"]=> string(0) "" ["case_subtext"]=> string(0) }
但这并不能解决任何问题
答案 0 :(得分:1)
仅仅因为$casemodule['case_header']
和$casemodule['case_subtext']
不存在,并不意味着$casemodul
将不存在。它可能是包含其他键的数组,也可能只是一个空数组,将会存在!
尝试检查$casemodule['case_header']
和$casemodule['case_subtext']
是否确实存在:
$casemodule = get_field('case_page_instore');
if(isset($casemodule['case_header']) && isset($casemodule['case_subtext'])) : ?>
<section class="block">
<h2><?php echo $casemodule['case_header'] ?></h2>
<p><?php echo $casemodule['case_subtext'] ?></p>
</section>
<?php endif; ?>
如果不确定变量,请始终使用var_dump($variable)
,然后再将其传递给if语句。
答案 1 :(得分:0)
我自己解决了,解决方法是:
if($casemodule['case_header'] && $casemodule['case_subtext']) : ?>
我只是删除了isset
的意思! :-)
感谢Reza的上一个答案