워드프레스 테마를 직접 수정했는데, 테마를 업데이트하니 수정한 내용이 전부 사라진 경험이 있으신가요? 이런 사태를 방지하는 것이 자식 테마(Child Theme)입니다. 자식 테마를 사용하면 부모 테마가 업데이트되어도 내가 커스터마이징한 코드는 안전하게 유지됩니다.
자식 테마란?
| 부모 테마 | 자식 테마 | |
|---|---|---|
| 역할 | 기본 디자인/기능 제공 | 부모 테마를 상속하면서 수정사항만 관리 |
| 업데이트 | 개발자가 배포하는 업데이트 적용 | 업데이트 영향 없음 |
| 수정 범위 | 직접 수정 ✕ (업데이트 시 초기화) | CSS, PHP, 템플릿 자유롭게 수정 ✔ |
원리: 워드프레스는 자식 테마의 파일을 먼저 확인하고, 없으면 부모 테마의 파일을 사용합니다. 따라서 자식 테마에서 수정한 파일만 우선 적용되고, 나머지는 부모 테마 그대로입니다.
자식 테마 만들기 (수동 방법)
Step 1: 자식 테마 폴더 생성
# wp-content/themes/ 아래에 자식 테마 폴더 생성
# 부모 테마가 "generatepress"라면:
mkdir /home/wpadmin/public_html/wp-content/themes/generatepress-child
Step 2: style.css 생성
자식 테마의 필수 파일입니다. 이 파일에서 부모 테마를 지정합니다.
/*
Theme Name: GeneratePress Child
Theme URI: https://study.thisgun.net
Description: GeneratePress 자식 테마
Author: 사이트 관리자
Author URI: https://study.thisgun.net
Template: generatepress ← 부모 테마의 폴더명 (정확히!)
Version: 1.0.0
*/
/* 여기에 커스텀 CSS 추가 */
/* 예: 본문 글꼴 크기 변경 */
body {
font-size: 17px;
line-height: 1.8;
}
/* 링크 색상 변경 */
a {
color: #0073aa;
}
/* 헤더 배경색 */
.site-header {
background-color: #ffffff;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
주의: Template: 값은 부모 테마의 폴더 이름과 정확히 일치해야 합니다. wp-content/themes/에서 부모 테마 폴더명을 확인하세요.
Step 3: functions.php 생성
부모 테마의 스타일시트를 불러오는 코드입니다.
<?php
// 부모 테마 + 자식 테마 스타일시트 불러오기
function child_theme_enqueue_styles() {
// 부모 테마 스타일
wp_enqueue_style('parent-style',
get_template_directory_uri() . '/style.css');
// 자식 테마 스타일 (부모 뒤에 로드 → 우선 적용)
wp_enqueue_style('child-style',
get_stylesheet_directory_uri() . '/style.css',
array('parent-style') // 부모 스타일 이후에 로드
);
}
add_action('wp_enqueue_scripts', 'child_theme_enqueue_styles');
// 여기 아래에 커스텀 PHP 코드 추가
// 예: 발행일 대신 수정일 표시
// 예: 커스텀 위젯 추가
// 예: 관리자 기능 커스터마이징
Step 4: 자식 테마 활성화
- 워드프레스 관리자 → 외모 → 테마
- “GeneratePress Child” 테마가 목록에 나타남
- “활성화” 클릭
- 사이트 확인 → 부모 테마와 동일하게 보이면 성공!
자식 테마에서 할 수 있는 것들
| 작업 | 방법 |
|---|---|
| CSS 수정 | 자식 테마의 style.css에 추가 |
| PHP 기능 추가 | 자식 테마의 functions.php에 추가 |
| 템플릿 수정 | 부모 테마의 템플릿 파일을 자식 테마로 복사 후 수정 (예: header.php, single.php, footer.php) |
| 새 페이지 템플릿 | 자식 테마에 새 PHP 파일 생성 |
템플릿 파일 오버라이드 예시
# 부모 테마의 header.php를 수정하고 싶다면:
# 1. 부모 테마에서 header.php를 자식 테마 폴더로 복사
cp wp-content/themes/generatepress/header.php
wp-content/themes/generatepress-child/header.php
# 2. 자식 테마의 header.php를 수정
# → 워드프레스가 자식 테마의 header.php를 우선 사용합니다
플러그인으로 간편하게 만들기
코드가 어렵다면 Child Theme Configurator 플러그인으로 클릭 몇 번이면 자식 테마를 생성할 수 있습니다.
- 플러그인 → 새로 추가 → “Child Theme Configurator” 검색 → 설치/활성화
- 도구 → Child Themes 메뉴
- 부모 테마 선택 → “Analyze” → “Create New Child Theme”
- 완료! 외모 → 테마에서 활성화
자주 하는 실수
| 실수 | 결과 | 해결 |
|---|---|---|
| Template 이름 오타 | 테마가 깨짐/표시 안 됨 | 부모 테마 폴더명과 정확히 일치 확인 |
| 부모 테마 직접 수정 | 업데이트 시 수정 내용 사라짐 | 항상 자식 테마에서 수정 |
| functions.php에 부모 스타일 미로드 | 디자인 깨짐 | 위의 enqueue 코드 필수 포함 |
마무리
자식 테마는 워드프레스 커스터마이징의 가장 기본이자 필수입니다. 테마를 조금이라도 수정할 계획이 있다면, 반드시 자식 테마를 먼저 만드세요. 한 번 만들면 이후 모든 수정이 안전해집니다. 소요 시간: 수동 5분, 플러그인 2분.