【问题标题】:Test if get_user_meta is false or not present测试 get_user_meta 是否为假或不存在
【发布时间】:2015-11-15 03:40:34
【问题描述】:

我的模板中有一个复选框,用于启用(选中)或禁用(未选中)运输选项。

我的意图是仅在未选中复选框时显示带有一些信息的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,只是不知道如何正确使用脚本。

【问题讨论】:

  • 检查这个值 $post->post_author
  • 那么值有什么问题?它适用于 true,为什么不是 false?
  • 我可以鼓励您编辑您的标题以获得更具体的内容吗?我真的很讨厌通用短语“它不起作用”。 :) 另外,我建议的解决方案见下文。

标签: php wordpress checkbox woocommerce


【解决方案1】:

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

  1. 您没有测试用户元数据是否为假。您的条件是测试用户元是否等于"yes"

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

这样的事情应该可以满足您的需求:

<!-- 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 } ?>

如果元数据被检查并保存为“是”(WooCommerce 将其所有布尔值都设为“是”/“否”。那么您可以推断如果值不等于是,运输被禁用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 2013-03-27
    • 1970-01-01
    • 2011-10-05
    相关资源
    最近更新 更多