Wordpress 新建Wp_Query()或pre_get_posts()以查看自定义帖子类型的所有帖子?

Wordpress 新建Wp_Query()或pre_get_posts()以查看自定义帖子类型的所有帖子?,wordpress,custom-post-type,Wordpress,Custom Post Type,我有一个存档模板文件,它显示了自定义职位类型人员的所有职位(称为archive person.php): 这是文件的开头 <?php get_header(); //Show all posts for this custom posttype (personnel) $args = array( 'post_type' => 'personnel', 'posts_per_page' => -1 ); $personnel_query = new WP_Query( $

我有一个存档模板文件,它显示了自定义职位类型人员的所有职位(称为archive person.php):

这是文件的开头

<?php 
get_header(); 

//Show all posts for this custom posttype (personnel)
$args = array( 'post_type' => 'personnel', 'posts_per_page' => -1 );
$personnel_query = new WP_Query( $args );
if (have_posts()) : while ($personnel_query->have_posts()) : $personnel_query->the_post(); 
主查询与次查询:
我使用哪种选择真的重要吗?还是仅仅是一个问题
偏好/口味

是的,有一个真正的区别:

1)pre\u get\u posts正在修改(或所有查询),而不是使用WP\u查询添加辅助查询

2)如果您想在二次查询上使用分页,通常必须对查询进行修改

通过使用
pre\u get\u posts
钩子,您可以修改属于
WP\u Query()
实例的所有查询,包括主查询,它是
WP\u Query()
的实例,并且存在于每个页面请求中

请记住,
get\u posts()
WP\u Query()
的包装,当
suppress\u filters
属性设置为
FALSE
时,过滤器处于活动状态

当使用
pre\u get\u posts
时,您通常希望通过使用一些。以下是几个示例,您可以使用:

a)确定当前查询是否为主查询

b)防止在后端修改查询

c)以post类型存档为目标

添加自定义的
WP_Query()
时,除了主查询之外,还添加了额外的查询

如果可以,我通常使用
pre_get_posts
操作,而不是添加辅助查询

例子: 如果要修改主查询,对于自定义职位类型
人员的存档,可以尝试:

add_action( 'pre_get_posts', function( $query ){
  if ( ! is_admin() && $query->is_main_query() ) {
    if ( is_post_type_archive( 'personnel' ) ) {
      $query->set('posts_per_page', -1 );
    }
  }
});
这是未经测试的,但您已经明白了;-)

进一步阅读: 希望以下链接可以为您提供有关差异的更多信息:


好的,非常感谢您的回复和推荐+我为此付出了代价!