RSS

태그 보관물: query_posts()

워드프레스 루프 총 정리

워드프레스에서 루프를 이용하는 방법은 총 4가지이다.

  • 기본 루프
  • WP_Query를 이용하는 루프
  • query_posts()를 이용하는 루프
  • get_posts()를 이용하는 루프

첫 번째, 기본 루프는 별다른 조작없이 디폴트 쿼리를 실행해 보여준다. (참고 : 워드프레스의 루프는 어떻게 돌아가는가.) 대부분의 테마에서 가장 많이 사용된다. 템플릿 태그를 통해 콘텐츠 정보를 확인할 수 있다.

두 번째, WP_Query를 이용하는 루프는 다수의 인스턴스를 생성해 데이터를 활용하고자 할 때 주로 사용한다. 멀티 루프를 통해 각각의 콘텐츠를 사용자 입맛대로 출력할 때 유용하다. (참고 : 워드프레스 루프 만들기[1])

세 번째, query_posts()를 이용하는 루프는 기본 쿼리 자체를 변경하고자 할 때 사용한다. 주로 Single 루프에 사용된다. (참고 : 워드프레스 루프 만들기[2])

마지막 get_posts()를 이용하는 루프는 쉽고 간편하게 콘텐츠 데이터를 불러올 때 사용한다. 주로 멀티 루프에 사용된다. (참고 : 워드프레스 루프 만들기[3])

Advertisements
 
 

태그: , , ,

워드프레스 루프 만들기[2]

커스텀 쿼리를 만드는 두 번째 방법을 알아보자. 바로 query_posts()다.

워드프레스 페이지가 호출되면 콘텐츠 정보가 전역변수인 $wp_query에 생성된다. 루프를 통해 데이터를 불러오더라도 기본 쿼리는 변경하지 않고 파라메터를 이용해 데이터를 조작한다. 하지만 이 기본 쿼리를 변경할 필요가 있을 때 사용하는 게 query_posts()이다.

query_posts()는 로우레벨 접근방식으로 기본 쿼리를 변경하는 장점이 있지만, 반대로 기본 쿼리를 변경하기 때문에  캐시가 지워져 성능에 영향을 미칠 수 있다. 재활용성과 데이터베이스 성능 저하를 고려해야 한다.

전역변수인 $wp_query를 변경하기 때문에 한 번 이상 호출하거나, 루프 내에서 호출하게 되면 메인 루프 내용이 달라져 잘못된 콘텐츠가 반환되므로 주의가 필요하다.

<?php
// retrieve one post with an ID of 5
query_posts( 'posts_per_page=3&paged='.$paged' );

// set $more to 0 in order to only get the first part of the post
global $more;
$more = 0;

// the Loop
while (have_posts()) : the_post();
	the_content( 'Read the full post »' );
endwhile;

wp_reset_query();
?>

query_posts( ‘posts_per_page=3&paged=’.$paged’)의 결과로 기본 추출된 포스트 콘텐츠가 변경된다. 즉, query_posts()가 없었다면 출력되었을 콘텐츠는 더 이상 나타나지 않는다.

query_post()는 $query_string을 변경하여 기본 쿼리를 변경하므로, 사용후에는 wp_reset_query() 함수를 호출해서 쿼리 복원을 해주는 게 좋다.

query_post()는 주로 single 루프의 결과값을 바꾸고 싶을 때 주로 사용한다. 포스트의 개수나 어떤 카테고리에서 제외하고픈 포스트나 테그등을 제한할 때 사용하면 좋다. 다중 루프에서도 사용할 수는 있지만, WP_Query를 사용하는 편이 낫다.

참고 : 파라메터 사용 법 : http://codex.wordpress.org/Function_Reference/WP_Query#Parameters

 
 

태그: , , ,