这被问了很多,所以让我们尝试并充分解释它。
我们可以简单地用if
语句并回显值,例如,
<?php if ( get_post_meta($post->ID, \'genre\', true) ) : ?>
<?php echo get_post_meta($post->ID, \'genre, true) ?> ?>
<?php endif; ?>
但这很难看,为什么可以用两个查询来代替一个查询呢?因此,我们将post\\u meta值放入一个变量中,如
$film_genre = get_post_meta($post->ID, \'genre\', true;
.
这看起来像:
$film_genre = get_post_meta($post->ID, \'genre\', true);
if ( $film_genre ) {
echo \'something is here\';
}
else {
echo \'nothing is here\';
}
此外,我发现函数在检查是否为空方面有点不稳定,所以我添加了一个额外的检查,以确保使用
!empty
(检查元框值是否为空)。
看起来像:
$film_genre = get_post_meta($post->ID, \'genre\', true);
if (!empty($film_genre)) {
echo $film_genre;
}
但事实并非如此!由于您的示例使用了7个元框,所以只需使用一个查询函数即可使用
get_post_custom
.
http://codex.wordpress.org/Function_Reference/get_post_custom这看起来像:
$film_meta = get_post_custom( $post->ID );
if ( $film_meta )
{
echo $film_meta[\'genre\'];
echo $film_meta[\'rated\'];
echo $film_meta[\'releasedate\'];
echo $film_meta[\'runtime\'];
echo $film_meta[\'director\'];
echo $film_meta[\'cast\'];
echo $film_meta[\'grade\'];
}
现在这已经好得多了,在一行中重复大量的内容可能看起来很愚蠢,但这只是一个示例,通常是您在值周围添加一些标记,或者可能是其他代码,重要的是您只使用一个函数,而且它干净、易于读取/理解和输出。
另请注意get_post_meta
设置为“true”并不意味着该值直观上为true,而是将结果设置为单个值,如果为空,则不返回任何结果。