📌 WordPress 구조 개요
WordPress는 **PHP 기반 CMS(Content Management System)**이며, MySQL 데이터베이스와 함께 작동합니다.
핵심 구조는 다음과 같이 구성됩니다.
1️⃣ WordPress 디렉터리 구조
WordPress를 설치하면 기본적으로 다음과 같은 디렉터리와 파일이 생성됩니다.
/wordpress │── wp-admin/ # 관리자 페이지 관련 파일 │── wp-content/ # 테마, 플러그인, 업로드 파일 저장 │ │── themes/ # 테마 파일 │ │── plugins/ # 플러그인 파일 │ │── uploads/ # 업로드된 미디어 파일 │── wp-includes/ # WordPress 핵심 기능 파일 (코어 라이브러리) │── wp-config.php # 데이터베이스 및 기본 설정 파일 │── .htaccess # URL 재작성 및 보안 설정 │── index.php # 메인 엔트리 파일 │── functions.php # 테마별 기능 정의 (테마 내부) │── wp-load.php # 부트스트랩 로더
📌 주요 디렉터리 & 파일 설명
경로 | 설명 |
---|---|
wp-admin/ | WordPress 관리자 패널 관련 파일 (/wp-admin URL로 접근) |
wp-content/ | 사용자 맞춤 설정(테마, 플러그인, 업로드 파일) 저장 |
wp-includes/ | WordPress 코어 파일 및 PHP 라이브러리 |
wp-config.php | 데이터베이스 연결 및 기본 설정 파일 |
.htaccess | Apache URL 재작성 및 보안 설정 |
index.php | WordPress 엔트리 파일 (모든 요청이 여기로 전달됨) |
2️⃣ WordPress 데이터베이스 구조
WordPress는 MySQL 데이터베이스를 사용하며, 기본적으로 12개의 주요 테이블을 포함합니다.
테이블 | 설명 |
---|---|
wp_posts | 게시글(페이지, 글, 첨부 파일 포함) 저장 |
wp_postmeta | 게시글의 메타데이터(커스텀 필드) 저장 |
wp_users | 사용자 계정 정보 저장 |
wp_usermeta | 사용자 메타데이터 저장 |
wp_comments | 댓글 정보 저장 |
wp_commentmeta | 댓글 메타데이터 저장 |
wp_terms | 카테고리 및 태그 저장 |
wp_term_taxonomy | 카테고리/태그와 관계 저장 |
wp_term_relationships | 게시글과 카테고리/태그 연결 |
wp_options | 사이트 설정(일반 설정, 플러그인 설정 등) 저장 |
wp_links | 링크(블로그 롤 기능, 현재 거의 사용 안 함) 저장 |
wp_plugins | 활성화된 플러그인 정보 저장 |
💡 모든 테이블 이름 앞에는 wp_
접두사가 붙지만, 설치 시 변경 가능
3️⃣ WordPress 동작 원리 (요청 흐름)
📌 1. 클라이언트 요청
사용자가 https://example.com/sample-page
에 접근하면:
📌 2. .htaccess
와 index.php
역할
.htaccess
파일이mod_rewrite
를 사용하여index.php
로 요청 전달index.php
→wp-load.php
→wp-blog-header.php
→wp-includes/template-loader.php
실행
📌 3. 데이터베이스 조회 및 페이지 렌더링
wp_query
객체가 URL을 분석하여 적절한 게시글을 검색wp_posts
테이블에서 데이터를 가져옴- 테마의
header.php
,content.php
,footer.php
파일을 합쳐 HTML 페이지 출력
4️⃣ WordPress 테마 구조
WordPress 테마는 wp-content/themes/
디렉터리에 위치하며, 기본적으로 다음 파일들로 구성됩니다.
/wp-content/themes/my-theme/ │── style.css # 테마 스타일시트 (필수) │── functions.php # 테마 기능 설정 (필수) │── header.php # 헤더 파일 │── footer.php # 푸터 파일 │── index.php # 메인 템플릿 (필수) │── single.php # 단일 글 템플릿 │── page.php # 페이지 템플릿 │── archive.php # 카테고리/태그/날짜별 목록 │── sidebar.php # 사이드바 파일 │── 404.php # 404 오류 페이지
💡 필수 파일: style.css
, index.php
, functions.php
📌 style.css
(테마 정보 설정)
/* Theme Name: My Custom Theme Theme URI: https://example.com Author: John Doe Version: 1.0 */
📌 functions.php
(테마 기능 추가)
<?php function my_theme_setup() { add_theme_support('post-thumbnails'); // 썸네일 기능 활성화 register_nav_menus(array( 'primary' => __('Primary Menu', 'my-theme') )); } add_action('after_setup_theme', 'my_theme_setup'); ?>
5️⃣ WordPress 플러그인 구조
WordPress 플러그인은 wp-content/plugins/
에 위치하며, PHP 파일을 포함하는 구조입니다.
/wp-content/plugins/my-plugin/ │── my-plugin.php # 플러그인 메인 파일 (필수) │── includes/ # 추가 기능 포함 │── assets/ # 이미지, CSS, JS 파일
📌 my-plugin.php
(간단한 플러그인 예제)
<?php /* Plugin Name: My Custom Plugin Description: 간단한 WordPress 플러그인 예제 Version: 1.0 Author: John Doe */ function my_custom_message() { echo "<p>Hello, this is my custom plugin!</p>"; } add_action('wp_footer', 'my_custom_message'); ?>
📌 위 코드는 사이트 하단(푸터)에 메시지를 추가하는 간단한 플러그인입니다.
📌 정리 (WordPress 구조 핵심 정리)
구성 요소 | 설명 |
---|---|
파일 시스템 | wp-admin/ (관리자), wp-content/ (사용자 데이터), wp-includes/ (코어 파일) |
데이터베이스 | wp_posts (글), wp_users (사용자), wp_options (설정) 등 12개 테이블 |
요청 흐름 | index.php → wp-load.php → wp-blog-header.php → 템플릿 파일 |
테마 | style.css , functions.php , header.php , index.php 필수 |
플러그인 | wp-content/plugins/ 에 my-plugin.php 형태로 추가 |
🚀 WordPress의 파일 구조와 데이터 흐름을 이해하면, 테마/플러그인 개발 및 사이트 커스터마이징이 쉬워집니다!