Wordpress 新建Wp_Query()或pre_get_posts()以查看自定义帖子类型的所有帖子?
我有一个存档模板文件,它显示了自定义职位类型人员的所有职位(称为archive person.php): 这是文件的开头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( $
<?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 );
}
}
});
这是未经测试的,但您已经明白了;-)
进一步阅读:
希望以下链接可以为您提供有关差异的更多信息:
好的,非常感谢您的回复和推荐+我为此付出了代价!