“高级自定义字段组”值为空,但换行元素仍然可见

时间:2018-07-03 22:19:52

标签: php wordpress advanced-custom-fields

我正在使用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_headercase_subtext字段为空,则不会(显然)显示它们,但是由于某种原因,<section>标签始终可见,自从我按照ACF页上的说明进行操作以来,这很奇怪。

有人可以告诉我发生了什么事吗?

更新

我尝试做var_dump($casemodule),结果是:

array(2) { ["case_header"]=> string(0) "" ["case_subtext"]=> string(0) }

但这并不能解决任何问题

2 个答案:

答案 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的上一个答案