测试get_user_meta是否为false或不存在

时间:2015-11-14 06:56:28

标签: php wordpress checkbox woocommerce

我的模板中有一个复选框,可以启用(选中)或禁用(取消选中)送货选项。

我的目的是仅在未选中复选框的情况下显示div一些信息 - 禁止发货。

我正在尝试插入到我的模板中并使用以下If语句:

<!-- Show DIV if checkbox is unchecked - false -->
<?php if( get_user_meta( $post->post_author, '_shipping_checkbox', false ) == 'yes' ) { ?>  
        <div id="info">
                  <p>Shipping is currently disabled</p>    
        </div>   
<?php } ?>

但这似乎不起作用且DIV没有出现。

如果我尝试使用TRUE而不是false来测试它,那么如果我选中复选框并将语句更改为true

<?php if( get_user_meta( $post->post_author, '_shipping_checkbox', true ) == 'yes' ) { ?>

然后div现在正确显示。

我在这里做错了什么?

或者我应该采取不同的方式吗?

我正在努力避免使用Jquery和Javascript,我只是不知道如何正确使用脚本。

1 个答案:

答案 0 :(得分:1)

我可以看到您的代码存在两个问题。

  1. 您没有测试用户元是否为false。如果用户meta等于"yes",您的条件是测试。

  2. get_user_meta()的第三个参数是一个布尔值,如果为true则返回元数据字段的值,如果为false则返回一个数组。

  3. 这样的事情应该做你正在寻找的事情:

    <!-- Show DIV if checkbox is unchecked - false -->
    <?php if( get_user_meta( $post->post_author, '_shipping_checkbox', true) !== 'yes' ) { ?>  
            <div id="info">
                      <p>Shipping is currently disabled</p>    
            </div>   
    <?php } ?>
    

    如果元检查并保存为&#34;是&#34; (WooCommerce将其所有布尔值作为&#34;是&#34; /&#34;否&#34;。然后您可以推断,如果值不等于是,那么运费是残疾人。