在循环外显示自定义字段元,站点范围

时间:2014-10-08 作者:egg_sanwich

我创建了一个自定义字段(“breaking”),目的是每当一篇文章出现此字段时,它都会在整个网站的标题中显示值(即所有文章、页面、档案等)。

我遇到的问题是,它只显示在主页和具有自定义字段的特定帖子页面上,而不显示在其他地方。

使用的代码(来自header.php):

<?php 
global $wp_query;
$postid = $wp_query->post->ID; ?>
<?php if( get_post_meta($postid, \'breaking\', true) ) { ?>
    <div>
    <a href="<?php the_permalink(); ?> "><?php echo get_post_meta($postid, \'breaking\', true); ?></a>
    </div>
<?php } ?>
<?php wp_reset_query();
?>
如何使其在整个站点范围内显示?

1 个回复
SO网友:Robert hue

要在标题中显示特定帖子的帖子元值,可以通过指定帖子ID而不是变量这样打印$post-ID.

<?php echo get_post_meta( \'1234\', \'breaking\', true ); ?>
get_post_meta 接受帖子id,如果您只需要显示来自一个特定帖子的帖子元,那么您可以在中定义帖子idget_post_meta 它总是只显示一篇文章的元值。

下面是您的更新代码。在这里1234 是您帖子的ID,您应该将其替换为您的。请注意,您还需要在permalink中添加帖子ID。

<?php if ( get_post_meta( \'1234\', \'breaking\', true ) ) { ?>
    <div>
    <a href="<?php echo get_permalink( \'1234\' ); ?> "><?php echo get_post_meta( \'1234\', \'breaking\', true ); ?></a>
    </div>
<?php } ?>

EDIT:

当然,对于带有动态post id变量的post meta,它不会在整个网站上都起作用,因为归档、分类、搜索、作者、标签页没有任何post id。相反,您可以从具有id的post/page打印post meta,但如果结果为空,则从特定post/page id打印post meta。

<?php 
    global $wp_query;
    if ( get_post_meta( $post->ID, \'breaking\', true ) ) { ?>
        <div><a href="<?php the_permalink(); ?> "><?php echo get_post_meta($postid, \'breaking\', true); ?></a></div>
    <?php } else { ?>
        <div><a href="<?php echo get_permalink( \'1234\' ); ?> "><?php echo get_post_meta( \'1234\', \'breaking\', true ); ?></a></div>
    <?php }
    wp_reset_query();
?>

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post