使用WP_QUERY访问帖子内容

时间:2015-01-29 作者:user1048676

我从模板中获得以下代码以查看和获取帖子信息:

<?php
 $args = array(
    \'post_type\'      => \'post\',
    \'posts_per_page\' => $count,
    \'paged\'          => $paged,
);
$wp_query = new WP_Query( $args );
?>

<?php if ( $wp_query->have_posts() ) : ?>
    <?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
        <?php echo $wp_query->post_title.\'<br>\';
    <?php endwhile; ?>
<?php endif; ?>
我想在这里显示文章标题等,但当我试图像上面那样做时,它没有显示任何内容。如何访问帖子信息?

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

首先,不要使用和滥用$wp_query 全局变量。此全局查询应仅保留给主查询。使用不会产生冲突的任何其他变量。

其次,不要使用生的WP_Post properties. 这些是未经过滤的原料。WP_Query 默认情况下设置postdata,从而可以使用模板标记。

第三,always 重置的所有实例WP_Query 避免与同一页面上的其他查询发生冲突

第四,这一行有语法错误<?php echo $wp_query->post_title.\'<br>\';. 缺少结束php标记

您可以将代码重写为以下内容

 $args = array(
  \'post_type\'      => \'post\',
  \'posts_per_page\' => $count,
  \'paged\'          => $paged,
);
$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) { 
    $query->the_post();
        the_title();
        the_content();
    }
    wp_reset_postdata();
}
如果需要访问WP_Post 属性,您可以使用

echo apply_filters( \'the_content\', $query->post_content );

要显示帖子内容,

echo apply_filters( \'the_title\', $query->post_title );

将显示文章标题。post状态可通过访问

$query->post_status

查看所有可用属性的列表here

你必须记住template tags 可在循环期间显示这些信息,而无需使用WP_Post 属性

SO网友:Jason Hoffmann

代码中有轻微错误。一旦开始循环(设置后进行$wp_query->the_post();) 然后,您可以开始使用WordPress模板标签访问帖子中的内容。因此,如果您想显示标题和内容,它将如下所示:

<?php
$args = array(
  \'post_type\'      => \'post\',
  \'posts_per_page\' => $count,
  \'paged\'          => $paged,
);
$wp_query = new WP_Query( $args );
?>

<?php if ( $wp_query->have_posts() ) : ?>
<?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
<h3><?php the_title(); ?></h3>
<p><?php the_content(); ?></p>
<?php endwhile; ?>
<?php endif; ?>
我建议你仔细阅读WP_Querytemplate tags.

结束

相关推荐

Pre_Get_Posts或$Where,使用哪一个?

我有一个自定义搜索小部件,它只搜索一个包含大于或等于1的meta\\u键的自定义帖子类型,我在其中收集帖子id。在所有这些帖子id中,我想排除那些具有meta\\u键“\\u start\\u date”(存储方式为01-16-2015)且值>=”search\\u input\\u start\\u date“和meta\\u key“\\u end\\u date”(存储方式为01-16-2015)且值lt=”的帖子类型search\\u input\\u end\\u date\'。我的问题是