Wordpress:获取自定义类型的所有帖子

Mic*_*ael 28 wordpress

我有这个奇怪的问题.我想获取所有自定义类型的帖子,这是我的代码段.

$query = new WP_Query(array(
    'post_type' => 'custom',
    'post_status' => 'publish'
));


while ($query->have_posts()) {
    $query->the_post();
    $post_id = get_the_ID();
    echo $post_id;
    echo "<br>";
}

wp_reset_query();
Run Code Online (Sandbox Code Playgroud)

这只能获得其中的6个,而我在数据库中有超过50条符合该条件的记录.谁能告诉我哪里出错了?

非常感谢!

jon*_*ono 39

'posts_per_page' => -1,

将此添加到WP_QUERY参数数组中,它应返回此自定义帖子类型的所有帖子.


And*_*rea 26

这将获得自定义类型的所有帖子get_posts:

$posts = get_posts([
  'post_type' => 'custom',
  'post_status' => 'publish',
  'numberposts' => -1
  // 'order'    => 'ASC'
]);
Run Code Online (Sandbox Code Playgroud)

  • 比 WP_Query 好得多。谢谢 :) (3认同)
  • @Rob:WP_QUery 和 get_posts 略有不同。如果您需要分页,例如 get_posts 对您没有多大帮助(例如,您无法说出帖子总数)。 (3认同)

Bob*_*evv 6

要返回的帖子数量在设置>阅读下设置

您可以传递要使用的查询的帖子数.

'posts_per_page' => 'number of posts'
Run Code Online (Sandbox Code Playgroud)


小智 6

您永远不要使用:

'posts_per_page' => -1
Run Code Online (Sandbox Code Playgroud)

如果您谈论的是SQL查询速度,它的运行速度会很慢且无效。因此,最好使用一些大整数。

这是性能危险。如果我们有100,000个帖子怎么办?这可能会使站点崩溃。例如,如果您正在编写小部件,并且只想获取所有自定义帖子类型,请为您的情况确定一个合理的上限。

此处有更多详细信息:https : //10up.github.io/Engineering-Best-Practices/php/#performance

  • 这种担忧是有道理的,但这个建议毫无意义。“所以最好使用一些大整数。” 这将对性能产生 0 影响,直到帖子数量超过该整数为止。但在这种情况下,查询将不再匹配所有帖子,这正是 OP 所要求的。 (2认同)