본문 바로가기
지속가능티끌/웹,워드프레스

워드프레스가 테마를 보이게 하는 내부 처리 과정 간략히 살펴보기.

by 리치굿맨 2014. 10. 20.



 

 

개요

   
 

본 글에서는 워드프레스가 우리가 지정한 테마를 보이게 하는 내부 절차를 파악해 본다. 

 

설명.

워드프레스에서는 우리가 만든 테마를 어떤 내부 과정을 거쳐 보이게 하는지 궁금하다.

 

테마의 예로  http://igotit.tistory.com/85) 에서 만들었던 가장 간단한 테마를 보자.

 

위 주소에서 만들었던 테마는 style.css, index.php 파일 2개로 만든 초간단 테마였고, 

테마의 index.php 에는 아래 처럼 달랑 text만 기록했었고(php코드도 아니고, html도 아님.),

 

 테마 만들기 시험중. 테마명 igotit Skeleton

 

이것이 웹에서 보일 때는 아래처럼 보였었다. 


 

위 사이트를 보면서 -> 사이트의 루트로 접속했는데 왜 테마폴더의 index.php가 보이지? 이런 의문이 생긴다.( 물론 본 테마 뿐만이 아니라 다른 모든 테마에서도 마찬가지다. )

 

본 글에서는 우리가 지정한 테마를 보이게 하는 워드프레스 내부 절차를 파악해 본다.  

 

 

 

 

 

 

 

 

1. 워드프레스가 테마의 템플릿(index.php) 을 보이는 과정.

   
 

앞에서 우리가 만든 테마가 웹에서 보이는 것을 보면서 생기는 첫번째 궁금함....  

 

브라우저에서 사이트의 루트로 접속했는데, 왜 themes/igotitskeleton 폴더의 index.php 가 보이지?

 

웹서버에서 우리의 테마가 있는 폴더는 \wp\wp-content\themes\igotitskeleton 이고, index.php 파일이 있는 곳도 이 자리다.

 

워드프레스가 아닌 통상적인 웹사이트를 만드는 경우라면,  우리가 만든 index.php 를 웹에서 보이게 하는 경우 아래와 같은 주소로 접속해야 indx.php 가 보인다.  (아래 주소 클릭해보면 위와 동일한 내용이 보임.)

 

http://igotit.kr/wp-content/themes/igotitskeleton/index.php 

 

그런데, 워드프레스에서는 http://igotit.kr/theme-skeleton (<- 이 폴더는 워드프레스로 구축된 멀티사이트 이며 사이트의 루트에 해당함)

 

주소로 접속하면 우리가 만든 테마가 보인다. 이는 워드프레스의 어떤 설정 때문에 이렇게 보이는건가?

 

위 문제부터 이해하고 넘어가자. 즉 워드프레스가 우리가 선택한 테마의 템플릿인 index.php 를 연결하여 웹에보이게 하는 처리 과정이 무엇인가?

 

이 과정 및 기타 상세한 코드 흐름에 대한 설명문이 codex에서 제공되고 있다. 보기 -> http://codex.wordpress.org/User:DavidHouse/Wordpress_Code_Flow 

주의사항  위 주소의 설명은 언제  현재의 워드프레스 버전 4.0 에서의 상황과 일치하지 않아서 혼선이 조금 생길 수 있다.

본 글의 설명은 워드프레스 4.0에서의 상황에 맞게 정리함.

 

위 글의 index.php 라는 부분에 바로 답이 나와있다. <- 여기서의 index.php 는 우리 테마의 index.php 가 아닌 워드프레스 설치된 루트에 있는 index.php 를 의미함.

 

질문 요점 : 워드프레스가 우리가 선택한 테마의 템플릿인 index.php 를 연결하여 웹에보이게 하는 처리 과정?

결론적인 답 : 워프프레스 루트에 있는 index.php(내부에서 최종호출되는 template_load.php) 가 처리함.

 

index.php 에서의 처리 과정을 조금 더 상세히 살펴보자.

 

워드프레스가 설치된 상태에서 브라우저로 접근하게 되면 제일 먼저 워드프레스의 index.php 가 실행된다. 아래 그림에 index.php 의 전체 내용보였다. 

 붉은 박스에 있는 define('WP_USE_THEME', true);  와 그 아래 파란색 박스부분의 코드가 전부이다.



 

define('WP_USE_THEME', true); 은 상수 WP_USE_THEME 를 true 로 설정하는것이다. 그냥 상수에 값을 할당하는 것일뿐 이것 자체가 특별한 기능없다.  http://codex.wordpress.org/User:DavidHouse/Wordpress_Code_Flow 의 설명에서도 테마 리다이렉션 을 하게한다는 설명이 전부다. 아마 이후에 호출되는 php들에서 WP_USE_THEME 값에 따른 처리가 이뤄지겠구나 라고 생각하면 된다. 

어디서 테마로 연결시키는지 계속 추적해보자.

 

require( dirname( __FILE__ ) . '/wp-blog-header.php' );

워드프레스의 index.php 의 기능은 wp-blog-header.php 를 실행시키는 것이 전부이며, wp-blog-header.php 파일은 워드프레스 설치된 루트에 있다. codex의 설명에서도( http://codex.wordpress.org/User:DavidHouse/Wordpress_Code_Flow#wp-blog-header.php )

wp-blog-header.php(그리고 이 파일속에서 인클루드된 파일들) 가 모든 처리를 다하고 있다고 설명하고 있다. 모든 처리란 아래와 같다.

 

1. reauest 를 이해하고, (리퀘스트란 브라우저로 접속할 때 주소창에 기록된 주소라고 생각하면됨.)

2. 데이터베이스로부터 해당하는 포스트를 가져오고,

3. 현재활성화된 테마에 따라 표현한다.

4. 그리고 브라우저에서표현되는것 말고도 많은 로레벨 처리가 이뤄진다. 예 HTTP 헤더를 내보내는 등.

 

wp-blog-header.php

이 파일의 내용을 보면 아래그림과 같다. 

 


 

 

3개의 처리가 전부다.

1. wp-load.php 를 실행하고,

2. wp() 실행하고,

3. template-loader.php 를 실행한다.

 

wp-load.php

wp-load.php 내부적으로 wp-config. setup-config.php 이 인클루드되고 있다. wp-config.php 파일속에는

username, password, database접속정보등이 있다. wp-config.php 내부에서는 wp-setting.php 를 인클루드 하고 있는데,

이 파일에서는 워드프레스 설치된 폴더 wp/wp-includes/ 속의 거의 모든 php 파일들을 포함시키고 있고, 주요 클래스 인스턴스 생성시킨다.

 

wp();

wp-blog-header.php 내에서 wp-load.php 다음에 실행되는 wp();에서는 요청(브라우저로 요청된 주소등)된 상황에 맞게, 데이터베이스에서 정보를 가져오는 처리를 수행하고 이를 워드프레스 전역변수에 저장해두는 처리. <- 즉, 이 단계 이후 해당 전역변수의 값을 활용 가능함. 활용이라 함은 템플릿에서 전역변수의 값을 웹에 표현하는 것이 대부분임. 

 

template-loader.php

 template (php파일) 을 로딩처리 하는 기능을 담당한다. 어떤 template 파일을 로딩 할지는 앞단의 wp() 처리과정에서 확보된 정보를 이용함.

 

테마폴더의 index.php가 로딩 될려면 template-loader.php 내에서 테마의 index.php 를 열기하는 처리가 있어야 할 것이다.

 

template-loader.php  파일을 열어보면, 아래 그림과 같이 가장 앞부분에 파란색 조건문에 WP_USE_THEME 가 정의되어있고, 그 값이 true 이면 빨간박스가 실행되게 되어있는데, 이 부분이 우리가 선택한 테마가 보여지도록 하는 처리가 이뤄지게 한다.  

 


 

do_action( 'template_redirect' );

 

do_action  함수에 대한  codex의 설명 보기 -> http://codex.wordpress.org/Function_Reference/do_action

 

template_redirect 에 대한 codex의 설명 보기 -> http://codex.wordpress.org/Plugin_API/Action_Reference/template_redirect

 

 

정리.

 

워드프레스에서 우리의  테마가 보이게 되는 과정은 워드프레스의 기본 index.php 가 실행 -> wp-blog-head.php  -> wp_load.php -> wp(); -> template_load.php 의 절차로 진행되면서 마지막 단계 template_load.php 단계에서 우리가 지정한 테마의 템플릿을 로드하는 처리를 수행함.

 

 

 

끝. 1. 워드프레스가 테마의 템플릿(index.php) 을  보이는 과정.

 

 

 

 

 

 

본 글이 포함된 통합 정리 글

 

WordPress 활용정보 정리 : http://igotit.tistory.com/23

 

 

 

121.

 

댓글0


.    
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     .