new Wp_Query() 또는 pre_get_posts()를 사용자 지정 게시물 유형에 대한 모든 게시물을 볼 수 있습니까?
사용자 지정 게시물 유형 담당자(archive-personnel.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();
이게 효과는 있지만, 제가 사용할 수 있는 건 알고 있습니다.pre_get_posts()
뿐만 아니라.근데.pre_get_posts()
- 필터는 관리자 등에게 영향을 주는지 확인해야 합니다.
그래서 제 질문은: 제가 어떤 대안을 사용하는 것이 정말로 중요한가요 아니면 단지 선호/취향의 문제인가요?
주 쿼리 대 보조 쿼리:
제가 어떤 대안을 사용하는 것이 정말 중요한가요, 아니면 단지 선호/취향의 문제인가요?
네, 정말 차이가 있습니다.
1)pre_get_posts는 WP_Query를 사용하여 기본 쿼리(또는 모든 쿼리)를 수정하는 것과 보조 쿼리를 추가하는 것입니다.
2)페이징이 보조 쿼리에서 작동하려면 일반적으로 기본 쿼리를 수정해야 합니다.
를 사용하여pre_get_posts
후크 당신은 모든 쿼리를 수정할 수 있습니다.WP_Query()
, 메인 쿼리를 포함합니다. 이는 예입니다.WP_Query()
모든 페이지 요청에 대해 존재합니다.
그 것을 기억하라.get_posts()
의 포장지입니다.WP_Query()
필터가 활성화되어 있을 때,suppress_filters
특성이 다음과 같이 설정됩니다.FALSE
.
사용시pre_get_posts
일반적으로 조건부 태그를 사용하여 특정 쿼리를 대상으로 삼기를 원합니다.다음과 같은 몇 가지 예를 사용할 수 있습니다.
a) 현재is_main_query()
쿼리가 주 쿼리인지 확인합니다.
b) 백엔드에서 쿼리를 수정하지 않도록 합니다! is_admin()
.
c) 포스트is_post_type_archive()
타입 아카이브를 대상으로 합니다.
사용자 정의를 추가할 때WP_Query()
, 그러면 기본 쿼리 외에 추가 쿼리를 추가하는 것입니다.
저는 보통.pre_get_posts
보조 쿼리를 추가하는 대신 가능한 경우 작업을 수행합니다.
예:
기본 쿼리를 수정하려면 사용자 지정 게시물 유형의 아카이브에 대해personnel
, 시도해 볼 수 있습니다.
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 );
}
}
});
이것은 검증되지 않았지만 당신은 알 것입니다 ;-)
추가 읽기:
다음 링크를 통해 차이점에 대한 더 많은 정보를 얻을 수 있기를 바랍니다.
https://wordpress.stackexchange.com/questions/76553/should-i-use-pre-get-posts-or-wp-query
https://wordpress.stackexchange.com/questions/81695/what-is-main-query
언급URL : https://stackoverflow.com/questions/21303743/new-wp-query-or-pre-get-posts-to-view-all-posts-for-custom-post-type
'programing' 카테고리의 다른 글
스키마의 조건부/실행 가능한 주석입니다.sql in Spring Boot 응용 프로그램 (0) | 2023.09.15 |
---|---|
엔티티 프레임워크를 사용하여 수동으로 키 입력 (0) | 2023.09.15 |
사용자 지정 이미지 필드와 다른 필드를 동시에 추가 (0) | 2023.09.15 |
스프링 부트 응용 프로그램-test.properties (0) | 2023.09.15 |
grep 결과 파일의 첫 N줄을 삭제해야 합니다. (0) | 2023.09.15 |