WP_Query를 사용하여 WordPress에서 쿼리 수행

게시 됨: 2023-02-12

WordPress 웹사이트를 제공하는 데이터베이스는 귀중한 정보로 가득 차 있습니다. 이를 통해 다양한 변수로 게시물과 페이지를 필터링할 수 있습니다. 그러나 표시하려는 항목이 테마의 일부가 아닌 경우 해당 데이터를 사용하는 다른 방법이 있습니다.

이것은 WP_Query가 들어오는 곳입니다. 이것은 다양한 매개 변수를 사용하는 PHP 클래스입니다. 결과적으로 웹 사이트에서 사용하거나 표시하기 위해 WordPress 데이터베이스에서 데이터를 가져올 수 있습니다.

이 기사에서는 WP_Query 클래스와 이를 사용하는 방법에 대한 더 깊은 이해를 제공합니다. 또한 사용 시 따라야 할 몇 가지 중요한 단계를 안내합니다. 준비가 되었다면 바로 뛰어들자!

목차
1. WP_Query란 무엇입니까?
2. WP_Query 사용 방법
2.1. 1. 사용자 지정 루프 시작하기
2.2. 2. 인수: WordPress 사용자 지정 쿼리의 백본
2.3. 3. WP_Query의 매개변수: 카테고리, 태그 등
2.4. 4. 메서드 및 속성으로 개체 수정
3. WordPress의 WP_Query 대 query_posts()
4. WP 엔진으로 WordPress 사이트 사용자 지정

WP_Query란 무엇입니까?

앞서 언급했듯이 WP_Query는 WordPress 데이터베이스에서 사용하는 PHP 클래스입니다. 이 특정 클래스는 여러 가지 작업을 수행할 수 있지만 주로 데이터베이스에서 게시물을 가져오는 데 사용됩니다.

이름에서 알 수 있듯이 사용자가 설정한 기준에 따라 쿼리를 만듭니다. WordPress에서 WP_Query와 함께 사용할 수 있는 매개변수가 많기 때문에 여러 고유한 방식으로 게시물을 끌어오고 표시할 수 있습니다. 이 게시물의 뒷부분에서 이러한 옵션에 대해 자세히 살펴보겠습니다.

WP_Query 사용 방법

WordPress 코드베이스의 다양한 측면을 배우는 단계일지라도 WP_Query는 시작하기에 좋은 클래스입니다. 이제 웹사이트에서 사용할 수 있는 네 가지 방법을 분석해 보겠습니다.

1. 사용자 지정 루프 시작하기

WP_Query 호출을 알 수 있는 가장 좋은 방법 중 하나는 WordPress Loop를 이용하는 것입니다. 루프가 무엇인지 잘 모르는 경우 읽어야 할 중요한 개념입니다.

루프는 게시물 콘텐츠를 요청하는 데이터베이스를 호출하고 반환된 데이터를 표시합니다. 또한 사이트가 단일 페이지에 표시할 게시물 수( 설정 > 읽기 메뉴에서 구성할 수 있음)와 같은 설정된 매개 변수를 기반으로 작동합니다.

루프의 기본은 다음과 같습니다.

<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>

이 간단한 문장은 본질적으로 게시물이 있으면 표시되어야 한다는 것을 의미합니다. 물론 원하는 디스플레이를 만들기 위해 이 기반에 다양한 템플릿 태그를 추가할 수 있습니다.

루프에 WP_Query를 삽입할 수도 있습니다. 이렇게 하면 반환할 게시물에 대한 매개변수를 배치할 수 있습니다. 어떻게 생겼는지 분석해 보겠습니다.

<?php

// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();

기본 루프에서 동일한 if/while 문을 볼 수 있지만 추가 WP_Query 문자열이 있습니다. 여기에서 설정한 매개변수에 따라 표시할 게시물이 결정됩니다.

예를 들어 게시물 목록에서 특정 작성자를 제외하려는 경우 루프에서 WP_Query를 사용하여 수행할 수 있습니다.

$query = new WP_Query( array( 'author' => -12 ) );

이것을 루프에 배치하면 표시되는 게시물에 작성자 번호가 "12"인 사용자가 더 이상 포함되지 않습니다.

이 방법으로 사용할 수 있는 매개변수의 수는 거의 무한합니다. 두 가지 예를 들기 위해 범주 정보와 고급 분류법을 포함할 수 있습니다.

2. 인수: WordPress 사용자 지정 쿼리의 백본

앞의 예에서 "($args)"가 문자열의 일부임을 눈치챘을 것입니다. 이것은 포함된 '인수'를 참조하는 쿼리의 중요한 부분입니다. 반환된 데이터에 포함할 내용을 정확히 데이터베이스에 알려줍니다.

기본적으로 이러한 인수는 표시하려는 정확한 결과를 결정하도록 설정할 수 있습니다. 인수는 변수의 값을 변경하는 데에도 사용할 수 있습니다. 예를 들어 범주 목록이 페이지에 표시되는 방식을 변경하려는 경우 인수를 사용할 수 있습니다.

귀하의 인수는 변수 및 값의 배열을 정의합니다. 따라서 원하는 경우 인수를 사용하여 배열을 정의하고 범주를 내림차순으로 표시하도록 데이터베이스에 지시할 수 있습니다. 또한 동일한 방법을 사용하여 게시물이 포함되지 않은 카테고리를 제외할 수 있습니다.

3. WP_Query의 매개변수: 카테고리, 태그 등

지금까지 매개변수에 대해서만 언급했습니다. 이 시점에서 그들이 실제로 무엇을 할 수 있는지 자세히 살펴보겠습니다. 그들의 주요 기능은 사용자 정의 디자인 게시물 모음을 가져올 수 있도록 하는 것입니다.

사이트 헤더에 사용할 수 있는 매개변수의 한 예는 범주 매개변수입니다. 이를 사용하여 표시할 특정 범주를 지정할 수 있습니다. 이는 관련 카테고리 번호 또는 슬러그를 제공하여 수행됩니다.

또한 Tag 매개변수를 사용하여 동일한 작업을 수행할 수 있습니다. 물론 범주 및 태그 매개변수는 WP_Query를 사용할 때 빙산의 일각에 불과합니다.

4. 메서드 및 속성으로 개체 수정

WP_Query와 같은 클래스의 속성을 직접 변경하는 것은 권장되지 않지만 메서드를 사용하여 속성과 상호 작용할 수 있습니다. 기본적으로 메서드는 함수와 같고 속성은 변수와 같습니다.

WP_Query에는 많은 속성이 있습니다. 단순한 "$posts" 속성에서 더 복잡한 속성까지 다양합니다. 그들과 상호 작용하는 데 사용되는 방법이 무엇이든 데이터는 배치하기로 선택한 매개 변수를 기반으로 반환됩니다.

WordPress의 WP_Query 대 query_posts()

페이지에서 기본 쿼리를 수정하는 다른 방법이 있다는 점은 주목할 가치가 있습니다. 이것은 query_posts() 함수입니다. 이것은 WP_Query와 유사한 방식으로 작동할 수 있지만 매우 문제가 될 수도 있습니다.

WordPress Code Reference에서는 웹사이트의 기본 루프 내에서 이 기능을 사용하지 말 것을 강력히 권장합니다. 플러그인과 테마에서도 피하는 것이 가장 좋습니다. 기본 쿼리를 완전히 재정의하기 때문입니다.

쿼리를 실행한 후 기본 루프를 '재설정'할 수도 있으므로 WP_Query 클래스가 선호됩니다. WP_Query를 사용하면 루프에서 여러 쿼리를 실행할 수 있으므로 wp_reset_postdata 함수를 구현하는 방법도 이해하고 싶을 것입니다.

기본 WordPress 루프 내부에 보조 루프를 삽입한 경우 재설정 기능이 끝에 배치되고 다음과 같이 표시됩니다.

<?php wp_reset_postdata(); ?>

이렇게 하면 기본 템플릿 태그가 복원되고 보조 루프가 시작되기 전 상태로 돌아갑니다.

WP 엔진으로 WordPress 사이트 사용자 지정

웹사이트에 항목이 표시되는 방식을 조정할 수 있다는 것은 워드프레스 사용의 이점 중 하나에 불과합니다. WP_Query를 이해하고 개발자 리소스 페이지에서 제공되는 도구를 활용하면 진정한 맞춤형 웹사이트를 구축하는 데 도움이 될 수 있습니다.

여기 WP Engine에서는 매력적인 웹 사이트를 구축하는 데 필요한 리소스가 있는지 확인하는 데 열정적입니다. 오늘 WordPress 솔루션 및 호스팅 계획을 확인하십시오!