WP_Query로 원하는 게시물을 검색하는 방법은 다음과 같습니다.

과거에 간단한 테마를 구축했다면 직접 게시물을 검색 할 필요가 없었습니다. 결국, WordPress는 기본 페이지에 가장 최근 10 개의 게시물과 보관 페이지에 올바른 게시물을로드합니다. 더 복잡한 시나리오는 어떻습니까? 일종의 사이트 맵을 원하고 모든 게시물을 나열하려면 어떻게해야합니까? 날짜순으로 주문 된 페이지?


WP_Query는 친구이므로 기준에 따라 데이터베이스에서 게시물을 가져올 수 있습니다. 특정 태그가 포함 된 단일 카테고리에서 모든 게시물을 검색 할 수 있습니다. 작년에 만든 모든 페이지와 추천 이미지가없는 게시물을 검색 할 수 있습니다..

이 글에서는 WP_Query의 작동 방식에 대해 심도있게 살펴 보겠습니다. 시작하겠습니다.!

커스텀 루프

사용자 지정 쿼리를 제대로 사용하려면 전달할 수있는 인수를 숙지해야합니다. 이걸보기 전에 빨리 만들어 봅시다 "해골" 게시물을 나열하는 데 사용할 수 있습니다. 일반 아카이브 페이지의 루프는 다음과 같습니다.

<?PHP if (have_posts ()) : ?>
<?PHP while (have_posts ()) : the_post () ?>

<?PHP는 계속 ?>
<?다른 PHP : ?>

<?PHP endif ?>

이것은 페이지가로드되기 전에 WordPress가 이미 올바른 게시물을 검색했기 때문에 정상적으로 작동합니다. 맞춤 검색어를 작성할 때는 맞춤 루프가 필요합니다. 코드는 매우 비슷합니다.

<?PHP
$ args = 배열 ​​(
‘post_type’=> ‘게시하다’,
‘post_status’=> ‘미래’
);
$ scheduled = 새로운 WP_Query ($ args);

경우 ($ 예정->have_posts ()) :
?>
<?PHP는 동안 ($ 예정->have_posts ()) : $ scheduled->the_post () ?>

<?PHP는 계속 ?>
<?다른 PHP : ?>

<?PHP endif ?>

WP_Query 클래스를 사용하여 새 WordPress 쿼리를 작성하고 매개 변수를 전달하여 필요한 게시물 유형을 지정합니다. 그런 다음 $ scheduled 객체에서 have_posts () 및 the_post () 메소드를 호출합니다..

객체 지향 프로그래밍을 처음 사용하는데 왜 그런지 이해하지 못하는 경우에도 걱정하지 않아도 맞춤 검색어를 쉽게 사용할 수 있습니다. 우리는 포스트 전체에서 $ args 배열에 집중할 것입니다..

간단한 인수

내가 언급했듯이, 주요 "지식의 몸" WP_Query는 논쟁에 있습니다. 그만큼 사본 여기에 가장 유용한 것들을 살펴 보겠습니다..

tag 또는 tag_id 매개 변수와 같은 일부 인수는 매우 간단합니다. 전자는 태그 슬러그를 사용하고 나중에는 태그 ID를 사용합니다. 여러 항목을 쉼표로 구분하거나 음수 ID를 사용하여 다음을 수행하는 게시물을 검색 할 것임을 나타낼 수도 있습니다. 아니 특정 태그를 첨부하십시오.

$ args = 배열 ​​(
‘post_type’=> ‘게시하다’,
‘tag_id’=> ’22, 92,44, -21 ‘
);
$ our_posts = 새로운 WP_Query ($ args);

스 니펫은 처음 세 개의 태그가 첨부되어 있지만 네 번째 태그는 첨부되지 않은 기사를 검색합니다. 이 시스템은 간단한 요구에 충분히 강력하지만 일반적으로 좀 더 유연한 분류법 쿼리를 사용합니다..

저자, author_name, cat, category_name, s (검색 용), post_status, post_type은 좀 더 간단한 필드의 예입니다. post_status와 같은 일부 필드에서는 여러 값을 사용하려는 경우 상태 배열을 전달해야합니다..

$ args = 배열 ​​(
‘post_type’=> array ( ‘post’, ‘page’),
‘post_status’=> array ( ‘draft’, ‘publish’),
‘cat’=> ‘뮤직 비디오’
);
$ our_posts = 새로운 WP_Query ($ args);

위의 예는 페이지, 게시물 중 하나 인 게시물을 검색합니다. 게시 또는 초안 상태이며 음악 또는 비디오 카테고리가 할당되어 있습니다. 음악 또는 비디오와 관련된 현재 또는 계획된 컨텐츠의 제목을 표시하는 데 사용할 수 있습니다.

분류법 쿼리

간단한 내용의 경우 언급 한 인수를 사용하여 카테고리 또는 태그를 기반으로 게시물을 검색하는 것으로 충분하지만 사용자 정의 분류법이 있거나 여러 매개 변수를 결합해야하는 경우 답은 tax_query 인수 자체에 있으며 배열 자체입니다. 먼저 예를 보자.

$ args = 배열 ​​(
‘post_type’=> ‘책’,
‘tax_query’=> 정렬(
정렬(
‘taxonomy’=> ‘유형’,
‘필드’=> ‘강타’,
‘terms’=> 배열 ( ‘scifi’, ‘thriller’),
‘연산자’=> ‘없음’,
),
정렬(
‘taxonomy’=> ‘저자’,
‘필드’=> ‘신분증’,
‘terms’=> 배열 (92, 883, 399),
),
‘관계’=> ‘과’,
),
);
$ query = 새로운 WP_Query ($ args);

여기서는 ‘책’게시물 유형에서 일부 분류 매개 변수를 추가하여 게시물을 검색합니다. tax_query에 정의 된 두 개의 배열을 사용하여 저자의 92, 883 또는 399로 작성된 책을 가져 오도록 지정했습니다. 아니 공상 과학 또는 스릴러 장르에서. relation 매개 변수는 두 배열 간의 관계를 정의합니다. 우리의 경우, 그것은 두 조건이 모두 충족되어야한다는 것을 의미하는 ‘와’관계입니다..

우리가‘또는’을 사용했다면 공상 과학이나 스릴러 범주에 속하지 않거나 지정된 세 명의 저자가 쓴 책을 검색했을 것입니다. 일반 영어로 이것은 의미합니다 : 공상 과학과 스릴러 장르를 제외한 모든 책을보고 싶습니다. 그러나 장르에 관계없이 Terry Pratchett, Douglas Adams 및 Stephen King의 모든 책을보고 싶습니다..

메타 쿼리

메타 쿼리는 구조적으로 분류 쿼리와 매우 유사하지만 게시물 메타 테이블의 데이터를 사용하여 게시물을 필터링합니다. 아래 코드는 추천 이미지가있는 모든 게시 된 게시물을 표시합니다..

$ args = 배열 ​​(
‘post_type’=> ‘게시하다’,
‘meta_query’=> 정렬(
정렬(
‘key’=> ‘_thumbnail_id’,
‘값’=> ”,
‘비교’=> ‘! =’,
),
),
);
$ query = 새로운 WP_Query ($ args);

WordPress는 _thumbnail_id 필드를 사용하여 게시물에 대한 추천 이미지의 ID를 저장합니다. 이 메타 값이 비어 있지 않은 모든 게시물을 검색하면 추천 이미지가있는 모든 게시물로 끝나야합니다..

여기서 비밀은 compare 속성 및 유형을 사용하는 방법을 알고 있습니다. SQL에서 익숙해야 할 다양한 값을 사용할 수 있습니다.‘=’,‘! =’,‘>’,‘>= ‘,‘<‘,‘<= ‘,’LIKE ‘,’NOT LIKE ‘,’IN ‘,’NOT IN ‘,’BETWEEN ‘,’BETWEEN ‘,’EXISTS ‘(WordPress 3.5 이상) 및’NOT EXISTS ‘(WordPress 3.5) 이상)

type 속성은 일반적으로 숫자 나 날짜를 비교할 때 중요합니다. 가능한 값은‘NUMERIC’,‘BINARY’,‘CHAR’,‘DATE’,‘DATETIME’,‘DECIMAL’,‘SIGNED’,‘TIME’,‘UNSIGNED’입니다. 숫자를 비교할 때 숫자를 사용하는 것을 명심하십시오. 대부분의 경우 괜찮을 것입니다.

분류법 쿼리와 마찬가지로 여러 요구 사항을 쌓은 다음 관계 매개 변수를 사용하여 이들 사이의 관계를 지정할 수 있습니다..

$ args = 배열 ​​(
‘post_type’=> ‘게시하다’,
‘meta_query’=> 정렬(
‘관계’=> ‘또는’,
정렬(
‘key’=> ‘기분’,
‘값’=> array ( ‘happy’, ‘awesome’),
‘비교’=> ‘에’,
),
정렬(
‘key’=> ‘수입’,
‘값’=> 500,
‘비교’=> ‘>’,
‘유형’=> ‘NUMERIC’
),
),
);
$ query = 새로운 WP_Query ($ args);

위의 예는 좋은 일이 발생한 가상 일기의 게시물을 표시합니다. 나는 행복하거나 굉장하다고 느꼈거나 그날 500 달러 이상을 벌었 다.

날짜 매개 변수

날짜는 약간 복잡 할 수 있지만 매우 유연합니다. 그만큼 WP_Query 설명서 더 많은 정보가 필요하면 많은 예가 있습니다..

특정 시간에서 게시물을 검색하는 것은 매우 쉽습니다. year, monthnum, w (연중 주), day 및 몇 가지 다른 매개 변수를 사용하여 시간을 지정할 수 있습니다. 아래 코드는 2013 년 3 월의 모든 게시물을 검색합니다..

$ args = 배열 ​​(
‘post_type’=> ‘게시하다’,
‘년’=> 2013 년,
‘월’=> 삼
);
$ query = 새로운 WP_Query ($ args);

더 복잡한 시간 범위에 들어가려면 date_query를 사용해야합니다. 이를 통해 익숙한 배열 형식을 사용하여 임의의 범위를 매우 쉽게 지정할 수 있습니다. 다음 예 (Codex 제공)는 주중 오전 9시에서 오후 5시 사이에 작성된 게시물을 검색하는 방법을 보여줍니다..

$ args = 배열 ​​(
‘post_type’=> ‘게시하다’,
‘date_query’=> 정렬(
정렬(
‘시간’=> 9,
‘비교’=> ‘>= ‘,
),
정렬(
‘시간’=> 17,
‘비교’=> ‘<= ‘,
),
정렬(
‘dayofweek’=> 배열 (2, 6),
‘비교’=> ‘중에서’,
),
),
);
$ query = 새로운 WP_Query ($ args);

주문 결과

목록이 표시되는 순서는 내부의 요소만큼 중요합니다. 고맙게도 WordPress는 order_by 및 order 매개 변수를 제공합니다. order 매개 변수는 매우 간단합니다. ASC 또는 DESC를 사용하여 오름차순 또는 내림차순으로 주문할 수 있습니다..

order_by 매개 변수는 ‘none’, ‘ID’, ‘author’, ‘title’, ‘name’, ‘type’, ‘date’, ‘modified’, ‘parent’, ‘rand’와 같은 여러 값을 취할 수 있습니다. , ‘comment_count’, ‘menu_order’, ‘meta_value’, ‘meta_value_num’, ‘post__in’. meta_value로 정렬하는 것이 특히 유용 할 수 있습니다. 이 경우 meta_key 필드도 지정해야합니다..

$ args = 배열 ​​(
‘post_type’=> ‘페인트 등’,
‘meta_query’=> 정렬(
정렬(
‘key’=> ‘가격’,
‘값’=> 50000,
‘비교’=> ‘>’,
‘유형’=> ‘NUMERIC’
),
),
‘order_by’=> ‘meta_value_num’,
‘meta_key’=> ‘가격’
);
$ query = 새로운 WP_Query ($ args);

이 예에서는 5 만 달러가 넘는 그림을 검색하여 가격에 따라 오름차순으로 주문합니다. 가격은 숫자로 저장되므로 문자열에 사용되는 meta_value와 달리 meta_value_num을 사용하여 결과를 정렬했습니다..

언급 할 가치가있는 또 다른 주문은 post__in입니다. 이 post__in은 자체적으로 매개 변수이며, 검색 할 게시물 ID 배열을 지정할 수 있습니다. 기본적으로 WordPress는 날짜순으로 게시물을 주문하며 post__in에 지정한 순서는 유지되지 않습니다. 값순으로 post__in을 사용하면 WordPress에서 순서를 유지합니다..

$ args = 배열 ​​(
‘post_type’=> ‘게시하다’,
‘post__in’=> 배열 (23, 441, 12, 322, 34, 33),
‘order_by’=> ‘post__in’,
);
$ query = 새로운 WP_Query ($ args);

마무리

WP_Query에 대한 소개에서이 클래스가 실제로 강력한 클래스라는 것을 분명히 알기를 바랍니다. WP 표준 방식으로 자신의 기준을 사용하여 게시물을 검색 할 수 있습니다. 그것 봐 선적 서류 비치 이 클래스는 질의와 루프를 조작하기 위해 제공하는 더 많은 정보와 훌륭한 속성과 메소드.

WP_Query는 WordPress를 훌륭한 일반 CMS로 만드는 요소 중 하나입니다. 즉 모듈 식 및 사용자 정의 가능한 방식으로 데이터베이스에서 개체를 검색 할 수 있습니다..

질문이 있으시면 의견에 알려주십시오.!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map