워드프레스 사이트에 접속 시(브라우저에서 url 호출 시), 워드프레스에서 일어나는 일련의 작업들을 간략히 정리한 가이드

 

첫 로딩 파일

사용자인 경우 : index.php (별로 하는 일 없음. 상수 정의하고 wp-blog-header.php를 로딩함)

어드민인 경우 : wp-admin/index.php

 

wp-blog-header.php

3가지 일을 함

- wp-load.php를 로딩 : wordpress 환경 전체를 셋업함

- wp() 함수 실행 : wp-includes/functions.php 안에 존재, query를 로딩함

- template-loader.php : 어떤 템플릿이 불려야 할지 결정함

 

wp-load.php

- wp-config.php를 체크해서 환경 설정을 계속함

- 마지막에 wp-settings.php 로딩하여, 실제 setup process를 진행함

 

wp-settings.php

아래 3개 파일 로딩함

- load.php (wp-includes 폴더 안에 존재) : 워드프레스가 필요한 첫 함수들 제공

- default-constants.php  (또한 wp-includes 폴더 안에 존재): 상수들 정의

- version.php  (이것도 wp-includes 폴더 안에 존재): 버전 정보 정의

 

functions.php, wp classes, plugin api

- compat.php : 옛날 php 버전 지원

- functions.php : 사이트 운영을 위한 기본적인 함수들

- class-wp.php :  쿼리 빌드

- class-wp-error.php : 에러 트래킹

- plugin.php : 액션, 필터 훅을 위해 필요한 함수들 제공

- mo.php : 번역 지원

 

Database class와 cache 설정

- require_wp_db() 와 wp_start_object_cache() 함수가 호출됨 (load.php 에서) : 데이터베이스 연결과 캐싱에 필요한 작업들 수행

 

default-filters.php

- 수많은 action과 filter 들을 설정함

 

multisite startup

- 멀티사이트가 설정된 경우, 필요한 작업들을 함

 

기본 로딩 마지막

- 워드프레스의 메인 함수 로딩이 끝났음

- 하지만 아직 워드프레스의 모든 기능이 사용 가능한 것은 아님(플러그인 등)

 

대부분의 워드프레스 로딩

- 긴 require 리스트를 로딩하면서 워드프레스의 코어 기능들을 위한 함수를 모두 로딩함

 

필수 플러그인 로딩

- 일반 플러그인 로딩 전, 필수 플러그인 로딩을 먼저 함

 

기본 taxonomies 와 post type

- Post, Page, Attachment, Category, Tag,… 등의 기본 taxonomies 와 post type 정의

 

Global object 생성

- wp, wp_query 등의 글로벌 object 생성하고 현재 쿼리 유지함

 

테마 선택

- 활성화된 테마를 체크하고, 테마의 functions.php 파일 로딩함

 

init hook

- init 훅에 걸린 액션들을 수행함

- 이 훅을 사용하는 플러그인과 테마들을 로딩함

 

wp_loaded hook

- 멀티사이트라면, wp_loaded 훅에 걸린 액션들을 수행 함

 

WP()

- 이 시점에는, 워드프레스의 모든 코어 함수들이 사용 가능함 (wp-includes/functions.php에 존재)

- url을 체크하고, 필요한 쿼리를 빌드하고 페이지에 필요한 데이터를 가져옴

 

template-loader.php

- 어떤 템플릿이 로딩되어야 하는지 체크함 

- template_redirect 체크

- http head request 체크

- robot이나 rss-feed, trackback인지 체크

- 위의 셋 중 하나가 아니면, 가능한 템플릿 리스트를 훓으면서 조건에 맞는 템플릿 선택함 > 현재 테마에 템플릿이 있는지 체크 > 있으면 $template 변수에 저장됨

- 매칭되는게 없으면, 기본 index 템플릿이 변수에 저장됨

- 마지막 filter (template_include) 불리고 결과가 브라우저에 표시됨

 

참고

https://medium.com/@dendeffe/wordpress-loading-sequence-a-guided-tour-e077c7dbd119

'개발 > 워드프레스' 카테고리의 다른 글

[워드프레스] 사이트 최적화  (0) 2022.07.02

+ Recent posts