Print out last 3 blogposts

时间:2013-06-30 作者:Zayatzz

从一个问题到另一个问题,从迪斯科到迪斯科:P

我的模板要求我在模板的标题中打印出最后3篇博客的标题。它的单页布局使这些博客帖子可以链接到页面上的帖子——就在下面的某个地方。。。

自从我完成wordpress新手版以来,我已经需要帮助来创建整个单页布局:

Single page theme

Modified home page query does not yield expected results

长话短说-我创建了应用程序挂钩,将原始查询更改为包含所有页面。在我们开始解析页面之前,需要处理这些博客帖子。

我的尝试-以下是一些示例,我设置了如下内容:

            <?php
            $args = array( 
                \'orderby\' => \'ID\', 
                \'order\' => \'DESC\', 
                \'post_type\' => \'post\',
                \'post_status\' => \'publish\',
                );
            $children = get_pages($args);
            foreach( $children as $post ){
                setup_postdata($post);
                get_template_part( \'header\', \'blogheader\' );
            }
            wp_reset_postdata();
            ?>
是的,该查询不包括帖子限制3,但就这样吧。这给了我什么-完全没有。如果我把这些参数中的所有内容都注释掉,那么我就会得到我的主查询。即使只有一个参数,比如“post\\u type”=>“post”,我也一无所获。

这让我想到,所有这些参数只是在修改原始的主查询,而不是创建新的查询。好的我替换了get_pages($args) 具有new WP_Query( $args );. 现在我得到了有趣的结果——一大堆帖子——尽管我实际上只有一篇原创的“hello world”帖子。它甚至会打印出没有标题的帖子(我猜它们是草稿之类的,尽管我还没有创建任何草稿博客帖子)。

所以我想要的是——我认为将post\\u type设置为post只会给我写博客帖子——我错了。我必须设置哪些参数才能仅获取按id排序的已发布博客帖子?

艾伦

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您没有对查询传递任何限制。

    $args = array( 
        \'posts_per_page\' => 3, 
        \'post_type\' => \'post\',
        \'post_status\' => \'publish\',
        \'ignore_sticky_posts\' => true
    );
    $children = new WP_Query($args);
    if ($children->have_posts()) {
      while ($children->have_posts()) {
        $children->the_post();
        // get_template_part( \'header\', \'blogheader\' ); // not on my server :)
      }
    }
    wp_reset_postdata();
我做了一些改变。您使用一个名为get_pages. 而该函数接受post_type 参数使用WP_Query 更整洁。

我补充道ignore_sticky_posts. 没有这些,你就不会得到最新的帖子,你会得到粘性帖子,然后是最新的帖子。

我不知道里面有什么header-blogheader.php 但它可能是以这样一种方式写的,即事情仍然不起作用。

结束

相关推荐

Get_Posts()不考虑用户权限

我想在我的wp上显示登录用户帖子的链接列表。所以我开始这样做:$posts_array = get_posts( array( \'post_type\' => \'download\', \'post_status\' => \'publish\' ) ); //$posts_array = apply_filters( \'downloads_shortcode\', $posts_array ); foreach($posts_array as $post) {