RSS

태그 보관물: parse_query

워드프레스 이해하기 – 어떻게 원하는 콘텐츠를 불러올까?


워드프레스는 최적화된 오픈 소스다. 유수의 뛰어난 프로그래머가 끊임없이 다듬고 또 많은 사용자에 의해 버그 리포팅이 된다. 소스는 더욱 정규화되고 단단해지지만, 코어 엔진이 어떻게 원하는 데이터를 던져 주는지 파악하기란 더욱 어려워 진다. 오픈 소스임에도 불구하고 말이다.

과연, 워드프레스는 어떤 방식으로 콘텐츠를 불러올까?

한 사용자가 나의 블로그에 접속하여 특정 태그 (Xdebug)를 클릭했다고 하자.

태그

웹 브라우저 URL이 다음과 같이 나온다.

https://guspark.wordpress.com/tag/xdebug

워드프레스는 해당 URL을 분석하고 아래와 같은 작업을 한다.

  1. 태그 페이지를 요청했군.
  2. 태그에 해당하는 템플릿을 준비하자.
  3. “xdebug”라는 태그가 첨부된 포스트를 찾아 출력하자.

세부적으로 알아보자.

1. 요청 URL을 해석해 콘텐츠를 선택하는 동작은 WP_Query 객체의 parse_query() 메소드가 수행한다. URL에서 쿼리 매개 변수를 추출한다. https://guspark.wordpress.com/tag/xdebug/와 https://guspark.wordpress.com?tag=xdebug/는 같다.(xdebug 값을 가진 태그를 추출)

2. 추출된 쿼리 매개변수를 MySQL 쿼리로 변환하여 콘텐츠를 가져온다. 이 과정에서는 WP_Query 객체의 get_posts() 메소드를 이용한다. get_posts()는 쿼리 매개변수를 모두 SQL문으로 변환한 후 MySQL에 쿼리를 직접 요청하여 원하는 콘텐츠를 추출한다.

3. 추출된 콘텐츠는 WP_Query 객체에 저장되어 워드프레스 루프에서 사용되고 필요 시 캐시로 저장된다.

4. 워드프레스는 쿼리 타입과 반환된 포스트의 개수를 근거로 테마에서 템플릿을 결정하며, 쿼리의 결과는 루프에 전달된다.

 

 
 

태그: , , ,