현재 위치: > 최신 기사 목록> WP_Query를 메인 쿼리와 병합하여 WordPress 쿼리 효율성을 향상시키는 방법

WP_Query를 메인 쿼리와 병합하여 WordPress 쿼리 효율성을 향상시키는 방법

gitbox 2025-06-13

wp_query 란 무엇입니까?

WP_Query는 WordPress의 강력한 쿼리 클래스로 분류, 레이블, 저자, 시간 및 기타 조건을 기반으로 쿼리 기사를 사용자 정의 할 수 있습니다. 이를 통해 시간, 임의 순서 또는 댓글 수에 따라 기사를 다양한 방식으로 정렬 할 수 있습니다. 간단히 말해서 WP_Query는 기본 쿼리와 무관하게 쿼리 인스턴스입니다.

WordPress에서 메인 쿼리는 프론트 엔드 요청에 의해 자동으로 생성되며 URL의 매개 변수와 WordPress 설정의 기본값을 기반으로 쿼리를 빌드합니다. 보다 정제 된 쿼리가 필요한 경우 WP_Query를 사용하여 사용자 정의 쿼리를 수행해야합니다.

기본 쿼리 및 사용자 정의 쿼리를 병합 해야하는 이유는 무엇입니까?

WP_Query는 강력한 기능을 제공하지만 대부분의 경우 기본 쿼리를 소규모 조정하면됩니다. 예를 들어, 기본 루프에서 특정 카테고리의 기사를 제외하거나 특정 저자의 기사 만 표시됩니다. WP_Query를 직접 사용하면 기본 쿼리의 매개 변수를 무시하여 예상 쿼리 결과를 충족하지 않는 쿼리 결과를 유발할 수 있습니다.

따라서 사용자 정의 쿼리가 기본 쿼리의 매개 변수를 상속 받고 쿼리 결과 충돌을 피할 수 있도록 WP_Query를 기본 쿼리와 병합해야합니다.

기본 쿼리 및 사용자 정의 쿼리를 병합하는 방법은 무엇입니까?

기본 쿼리와 사용자 정의 쿼리를 병합하는 두 가지 방법이 있습니다. 하나는 functions.php에서 pre_get_posts hook를 사용하고 다른 하나는 템플릿 파일에서 쿼리 매개 변수를 직접 수정하는 것입니다. 각 방법에는 장점과 단점이 있으며 특정 요구에 따라 적절한 방법을 선택해야합니다.

방법 1 : pre_get_posts 후크를 사용하십시오

pre_get_posts는 WordPress의 중요한 후크 기능으로 쿼리 전에 쿼리 매개 변수를 수정할 수 있습니다. functions.php 파일에서 pre_get_posts hook 함수를 사용하면 메인 쿼리의 매개 변수를 쉽게 수정하여 원하는 효과를 달성 할 수 있습니다.

예는 다음과 같습니다.

 function my_custom_query($query) {
    // 백그라운드 쿼리가 아니고 기본 쿼리라면,쿼리 매개 변수를 수정하십시오
    if (!is_admin() && $query->is_main_query()) {
        $query->set('cat', '-1,-2,-3'); // 들어오지 못하게 하다ID~을 위한1、2、3분류
        $query->set('author', '1'); // 만 보여주십시오ID~을 위한1저자의 기사
    }
}
add_action('pre_get_posts', 'my_custom_query');

위의 코드에서는 $ query-> set () 함수를 사용하여 쿼리 매개 변수를 수정하여 특정 범주를 제외하고 특정 저자 기사 만 표시하는 기능을 달성합니다.

방법 2 : 쿼리 매개 변수를 직접 수정하십시오

템플릿 파일의 쿼리를 간단한 수정 만하면 쿼리 매개 변수를 직접 수정할 수 있습니다. 이것은 더 직접적이고 간단합니다. 예를 들어:

 // 홈페이지 템플릿의 코드
$featured_posts = new WP_Query(array(
    'category_name' => 'featured', // 만 보여주십시오特定分类的文章
    'posts_per_page' => 5, // 만 보여주십시오5기사
));

while ($featured_posts->have_posts()) {
    $featured_posts->the_post(); // 기사 제목 표시、내용 등
}
// 원래 쿼리를 복원하십시오
wp_reset_postdata();

위의 코드에서는 Category_Name 및 Posts_per_Page 매개 변수를 설정하여 특정 범주의 첫 5 개의 기사를 쿼리합니다. 동시에 WP_RESET_POSTDATA () 함수를 사용하여 후속 쿼리에 영향을 미치지 않도록 원래 쿼리를 복원하십시오.

주목해야 할 것

pre_get_posts 후크를 사용하든 쿼리 매개 변수를 직접 수정하든 다음 지점에주의를 기울여야합니다.

  • 다른 쿼리 결과에 영향을 미치지 않도록 쿼리 매개 변수를주의 깊게 수정하십시오.
  • WP_RESET_POSTDATA ()를 사용하여 후속 쿼리가 영향을받지 않도록 원래 쿼리를 복원하십시오.
  • functions.php에서 직접 WP_Query 클래스를 사용하지 않으려면 사이트 성능에 영향을 미치지 마십시오.

결론

WP_Query를 메인 쿼리와 병합하는 것은 WordPress 개발에서 매우 실용적인 기술입니다. 쿼리를보다 정확하게 사용자 정의하고 충돌을 피하는 데 도움이됩니다. pre_get_posts 후크를 사용하거나 쿼리 매개 변수를 직접 수정하든 불필요한 부작용을 피하기 위해 합리적으로 사용해야합니다.