RSS

태그 보관물: 워드프레스

워드프레스 루프 만들기[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

Advertisements
 
 

태그: , , ,