从一个问题到另一个问题,从迪斯科到迪斯科: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排序的已发布博客帖子?
艾伦
最合适的回答,由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
但它可能是以这样一种方式写的,即事情仍然不起作用。