📌 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의 파일 구조와 데이터 흐름을 이해하면, 테마/플러그인 개발 및 사이트 커스터마이징이 쉬워집니다!
