Wordpress if查询总是返回true


Wordpress if query always returning true

我已经使用同一段代码好几年了,直到最近几周才开始使用。它现在显示了"blog_posts"是否属实的内容——有人能告诉我为什么会这样,以及我如何解决它吗?

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

非常感谢

来自get_post_meta():的Codex页面

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

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

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

它应该按预期工作。

empty()将在空数组或空字符串上返回boolean true,因此无论get_post_meta()上的single参数是true还是false,它都会起作用。

已编辑

我错了,空字符串与boolean false不一样。从您的评论中,我看到您正在恢复array( '' )(而不是array()'')——尽管您已经将single参数设置为true应该只返回一个字符串。

为了让它发挥作用,你可以这样做:

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

但WordPress会返回array仍然很奇怪,尽管你已经明确告诉它而不是