Значения группы расширенных настраиваемых полей пусты, но элемент переноса все еще виден - PullRequest
0 голосов
/ 04 июля 2018

Я создаю сайт Wordpress, используя Advanced Custom Fields. Так что теперь я хочу отображать эти поля, только если они «существуют», например, если у них есть контент. Я сделал это условное заявление:

$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 .

Может кто-нибудь сказать мне, что происходит?

UPDATE

Я пытался сделать var_dump($casemodule), и результат был:

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

но это ничего не решило

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Я решил это сам, решение было:

if($casemodule['case_header'] && $casemodule['case_subtext']) : ?>

Я просто удалил isset вуаля! : -)

Спасибо Резе за предыдущий ответ

0 голосов
/ 04 июля 2018

То, что $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.

...