RSS

워드프레스의 루프는 어떻게 돌아가는가.

17 1월

루프를 구성하는 최소한의 소스를 보자.

<?php

if (have_posts()) :

while (have_posts()) :

the_post();

// loop content (template tags, html, etc)

end while;

end if;

?>

콘텐츠가 있으면 루프를 돌려서 출력한다는 내용이다. 일반 프로그래밍에서 흔히 볼 수 있는 패턴이다. 하지만 어디서 어떻게 원본 데이터를 가져오는지에 대한 코드가 보이지 않는다. 즉, 매개 되는 변수가 없다. 아마도 내부에서 전역으로 사용되는 변수에 값이 담겨 있을 것 같다는 추축을 하게 된다. 답답함이 몰려올 것이다.

이 간단한 소스를 이해하기 위해서는 워드프레스의 동작 원리를 알아야 한다. 이전 포스팅(워드프레스 이해하기 – 어떻게 원하는 콘텐츠를 불러올까?)을 참고하자.

요청 페이지가 호출되면, 워드프레스는 이미 기본 쿼리 객체 내에서 get_posts() 메소드를 호출하여 콘텐츠 목록을 작성하고 전역 변수에 저장한다. 이때 WP_Query 객체의 $wp_query가 저장소 역할을 한다. 이게 핵심이다. 그 다음은 루프가 해당 목록을 출력한다.

the_post() 메소드의 정의를 보면 $wp_query 변수를 확인 할 수 있다.

function the_post() {

     global $wp_query;

     $wp_query->the_post();
}

Advertisements
 
 

태그: , , , ,

워드프레스의 루프는 어떻게 돌아가는가.”에 대한 1개의 응답

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

 
%d 블로거가 이것을 좋아합니다: