使用php和wordpress中的自定义字段的If语句-隐藏空字段

使用php和wordpress中的自定义字段的If语句-隐藏空字段,php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,我有一个按钮的and if语句 如果两个高级自定义字段都存在,我希望它显示按钮,如果没有,我希望它隐藏,但我在这里挣扎 我看了这一页: 这是我的密码: <?php if( get_field('button_link') && get_field('button_text') ): ?> <a href="<?php the_field('button_link'); ?>" class="btn third-btn mx-auto">

我有一个按钮的and if语句

如果两个高级自定义字段都存在,我希望它显示按钮,如果没有,我希望它隐藏,但我在这里挣扎

我看了这一页:

这是我的密码:

<?php if( get_field('button_link') && get_field('button_text') ): ?>
    <a href="<?php the_field('button_link');  ?>" class="btn third-btn mx-auto">
    <?php the_field('button_text');?> <i class="fa fa-arrow-circle-right" aria-hidden="true"></i>
  </a>
<?php endif; ?>
有人有什么建议吗


干杯:

我不是ACF专家,但看看这里的get_字段函数描述,该函数似乎永远不会返回描述中提到的布尔值,我引用:

返回指定字段的值

因为它不返回布尔值,所以不能保证get_字段'something'和&get_字段'something2'是正确的布尔值。if语句将某些值解释为布尔值true或false。例如,null和0被解释为false,但-1被解释为true。我建议你做一个

var_dump( get_field('button_link') ) 
探索输出。此外,根据“检查值是否存在”下的说明,您可以检查是否存在一个值,因此这可能会起作用:

<?php if ( get_field( 'button_link' ) ) : ?>
    <?php if ( get_field( 'button_text' ) ) : ?>
        <a href="<?php the_field( 'button_link' ) ?>" class="btn third-btn mx-auto">
            <?php the_field( 'button_text' ) ?> <i class="fa fa-arrow-circle-right" aria-hidden="true"></i>
        </a>
    <?php endif ?>
<?php endif ?>

我喜欢使用get_post_meta,这对我来说似乎更清楚,但在这里签出值存在选项:-您的button_链接和button_文本字段可能返回空数组或字符串,而不是布尔值false-因此它会计算if块。需要填充链接和文本,以便语句计算为true。你是说即使这些值为空,你的按钮也会呈现吗?我会调试xdebug、var_dump语句,或者回显get_field'button_link'和get_field'button_text'的结果,因为它们必须包含一个true ish值布尔值true、非空字符串或正整数。我看不出你的代码有什么问题,当button_link和button_text字段不为空时,应该显示button,使用打印目标文件“按钮链接”;并打印目标文件“按钮文本”;看看他们是否有价值感谢所有的评论!Máximo帮我整理好了:干杯!!玛西莫,你拯救了这一天!感谢您的回答,我刚刚将其添加到我的模板中,并从用户的角度对其进行了测试,效果非常好!我确实想过要这样做,但没有尝试!为帮助干杯将此标记为回答:干杯!!不客气,很高兴我能帮上忙。如果要避免多个嵌套AND,可以编写一个小函数,如:function is_field\u set$field{return$field?true:false;},这样您就可以安全地执行If is_field\u set get_field'one'和is_field\u set get_field'two'。。。
var_dump( get_field( 'button_link' ) );
var_dump( get_field( 'button_text' ) );