Wordpress如果查询总是返回true

时间:2013-12-04 15:45:19

标签: php wordpress if-statement

我几年来一直在使用同一段代码,只是在过去的几周里才开始播放。现在它显示了'blog_posts'是否为真的内容 - 有人能告诉我为什么会这样,以及如何修复它?

<?php if ( get_post_meta($post->ID, 'blog_posts', true) ) : ?>

非常感谢

1 个答案:

答案 0 :(得分:0)

来自Codex page for get_post_meta()

  

如果没有返回任何内容,除非$ single已设置为true,否则该函数将返回一个空数组,在这种情况下返回一个空字符串。

空字符串或空数组boolean false不一样。将您的代码更改为:

<?php if( ! empty( get_post_meta( $post->ID, 'blog_posts', true ) ) ) : ?>

它应该按预期工作。

empty()会在空数组或空字符串上返回boolean true,因此single上的get_post_meta()参数是true还是falseboolean false

<强>被修改

我错误地认为空字符串与array( '' )不一样。根据您的评论,即使您已将array()参数设置为{,我也会看到您返回''(而不是singletrue) {1}}, 只返回一个字符串。

要实现这一目标,您可以这样做:

<?php if ( array( '' ) != get_post_meta( $post->ID, 'blog_posts', true ) ) : ?>

但是,即使你明确告诉,WordPress也会返回array,这仍然很奇怪。