我已经使用同一段代码好几年了,直到最近几周才开始使用。它现在显示了"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
仍然很奇怪,尽管你已经明确告诉它而不是。