我试图创建一个显示我的文章的页面(一个与wp中定义的“post”页面不同的页面)。
当我将我的index.php复制到这个新页面并添加
<?php query_posts('post_type=post&posts_per_page=5&paged='.get_query_var('paged')); ?>上边
<?php if ( have_posts() ) : ?>
...
...然后一切正常-我的帖子显示。如果我想把
<?php get_posts(); ?>而不是
<?php query_posts('post_type=post&posts_per_page=5&paged='.get_query_var('paged')); ?>这些帖子没有显示出来。
由于每个人都认为get_posts()一般比query_posts()更可取,所以我想知道如何使用get_posts()显示这些帖子。
发布于 2015-10-27 16:21:03
每个页面都有一个“主查询”,该查询在加载模板之前运行。主查询的结果是WordPress如何确定要加载的模板。标准循环对主查询中包含的数据进行操作,这就是为什么它似乎只是神奇地“工作”,而不必自己显式地查询某些内容。
query_posts覆盖该主查询的内容。这就是不应该使用query_posts的原因--在加载模板之后,您将更改查询结果,这可能会产生意想不到的后果。pre_get_posts是修改主查询的首选方法,它在主查询发生之前运行,因此接下来的所有操作都是在正确的数据集上进行的。
get_posts和WP_Query用于运行与主查询分离的附加查询。您必须将结果赋值给一个变量,并对这些结果运行某种循环。您对get_posts的使用什么也不做,因为您对该查询的结果没有做任何操作。
https://wordpress.stackexchange.com/questions/206724
复制相似问题