빠른 고장
- query_posts – 드문 경우를 제외하고는 사용하지 마십시오
- pre_get_posts – 페이지에서 기본 쿼리를 변경하려는 경우 사용
- 새로운 WP_Query – 기본 쿼리에서 다른 결과를 얻는 데 사용
- get_posts – WP_Query와 동일하며 대신 결과를 배열 형식으로 반환합니다.
query_posts
더 이상 query_posts를 사용하지 않는 것이 좋습니다. 달성하려는 것을 달성하는 더 좋은 방법이 있습니다. 기본 검색어를 변경하려고하십니까? pre_get_posts 조치를 사용하여 결과를 필터링하십시오 (아래 참조). query_posts 는 원래 기본 쿼리를 이미 실행 한 후 옆으로 던지고 새 기본 쿼리를 만듭니다. 모든 사후 관련 전역 변수를 대체하고 완전히 새로운 데이터베이스 호출을 발생시킵니다. 기존 쿼리를 변경해서는 안되는 이유는 없습니다. 나는 사용해야 할 몇 가지 가장자리 사례가 있다고 확신하지만 머리 꼭대기에서 생각할 수는 없습니다. 아래 옵션 중 하나를 사용하는 것이 더 적합 할 것입니다.
pre_get_posts
필터입니다. 기본 조회를 페이지로 수정합니다. 예를 들어 홈페이지에 표시되는 결과 수를 변경하고 싶습니다.
함수 tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ( 'posts_per_page', 2); 반환; }} add_action ( 'pre_get_posts', 'tj_change_home_number');
이렇게하면 기본 검색어가 홈페이지에 2 개의 게시물 만 반환하도록 변경됩니다.
WP_Query
호출되는 템플리트의 기본 조회는 WP_Query 의 인스턴스입니다. 템플릿 내에서 전역 게시 변수와 상호 작용하면 WP_Query 의 결과입니다. 이것의 사용 사례는 많지만 get_posts와 마찬가지로 관련 게시물을 가져 오기 위해 새로운 WP_Query 를 선언합니다. 새 WP_Query 를 반복하는 동안 the_post () 함수를 실행하는 경우 글로벌 포스트 데이터를 원래 기본 쿼리로 재설정하기 위해 반복이 완료된 후 wp_reset_postdata () 함수를 실행하십시오.
get_posts
get_posts를 사용하면 실제로 새로운 WP_Query를 호출하고 해당 정보를 배열 형식으로 리턴 할 수 있습니다. 일반적으로 홈페이지의 슬라이더에 대한 게시물을 반환하거나 사이드 바에서 관련 게시물을 호출 할 때 get_posts를 사용합니다. WP_Query 는 쉽게 사용할 수 있지만 전역 게시물 변수를 수정하지 않고 게시물 배열을 수신하는 좋은 방법입니다. 내 견해로는 가장 단순하고 사용하기 쉽습니다. 데이터가 반환 된 후에는 배열을 반복하면서 필요한 함수 호출이 없습니다.
이것은 약간 혼란 스러울 수 있으므로 아래 의견에 자유롭게 질문하십시오.
참고:
WP_Query
pre_get_posts
query_posts
get_posts