개발 환경 설정 및 주제 구조 이해
코드를 작성하기 시작하기 전에, 적합한 로컬 개발 환경을 준비해야 합니다. Local by Flywheel, XAMPP, MAMP와 같은 도구를 사용하는 것을 추천합니다. 이러한 도구들을 사용하면 PHP, MySQL, Apache/Nginx가 포함된 서버 환경을 빠르게 설정할 수 있습니다. 또한, 사용하는 텍스트 편집기나 IDE(예: VS Code, PhpStorm)가 코드 하이라이팅 기능과 FTP/SFTP 기능을 지원하는지 확인하십시오.
표준적인 WordPress 테마는 사실상 특정 구조를 가진 폴더로, 웹사이트의 디자인과 기능을 정의하는 파일들이 담겨 있습니다. 이 폴더는 WordPress 서버에 업로드되어 사용됩니다. /wp-content/themes/ 디렉터리 내에는 단 두 개의 가장 기본적인 핵심 파일만 있습니다.index.php 그리고 style.css그중에서,style.css 스타일시트뿐만 아니라, “테마 선언 파일’이기도 합니다. 이 파일의 헤더 주석에는 테마에 대한 메타데이터가 포함되어 있습니다.
/*
Theme Name: My Custom Theme
Theme URI: https://example.com/my-theme
Author: Your Name
Author URI: https://example.com
Description: 这是一个为展示而开发的自定义WordPress主题。
Version: 1.0.0
License: GNU General Public License v2 or later
Text Domain: my-custom-theme
*/ WordPress는 이 주석을 통해 사용 중인 테마를 식별합니다.Text Domain 국제화를 위해 사용되며, 이후 번역 작업을 위한 식별자입니다.
추천 읽기 WordPress 테마 개발의 궁극적인 가이드: 제로에서 시작하여 첫 번째 커스텀 테마를 만들어보세요.。
템플릿의 계층 구조를 이해하는 것입니다.
WordPress는 템플릿 계층 구조(Template Hierarchy) 메커니즘을 사용하여 다양한 유형의 콘텐츠에 어떤 템플릿 파일을 적용할지 결정합니다. 예를 들어, 블로그 홈페이지에 접속할 때 WordPress는 순서에 따라 적절한 템플릿을 찾아서 사용합니다. home.php만약 해당 항목이 존재하지 않는다면, 대신 다른 것을 사용하십시오. index.php단일 기사의 경우, 우선적으로 해당 기사를 찾을 것입니다. single-post.php그리고 나서는… single.php마지막으로는… index.php。
이 메커니즘을 이해하는 것은 유연한 테마를 개발하는 데 있어 핵심입니다. 모든 템플릿 파일을 만들 필요는 없으며, 사용자 정의가 필요한 페이지 유형에 맞는 파일만을 만들면 됩니다. 나머지 페이지들은 자동으로 처리됩니다. index.php 이 최종적인 “백업” 템플릿 처리 방법에 대해 설명해 드리겠습니다.
핵심 템플릿 파일을 구축합니다.
템플릿 파일은 테마의 기본 구조를 형성하며, 웹사이트의 다양한 부분에서 사용되는 HTML 구조를 제어합니다. 우선 필수적이고 자주 사용되는 몇 가지 파일을 만들어보겠습니다.
헤더(head) 및 테일러(tailer) 템플릿을 생성합니다.
DRY(Don’t Repeat Yourself) 원칙을 준수하기 위해, WordPress 테마는 일반적으로 헤더(Header)와 푸터(Footer)를 별도의 파일로 분리합니다.
헤더 파일 (Header File) header.php "포함하는 내용은 다음과 같습니다:" <!DOCTYPE html> 시작 부분부터 본문 영역까지의 모든 코드 중에서 가장 중요한 것은 해당 기능을 호출하는 부분입니다. wp_head() 이 함수를 통해 WordPress 코어, 플러그인, 그리고 테마에서 필요한 코드(예: 스타일시트 링크, 메타 태그 등)를 여기에 삽입할 수 있습니다.
추천 읽기 WordPress 테마 개발 입문: 첫 번째 커스텀 테마를 단계별로 만드는 방법。
<!DOCTYPE html>
<html no numeric noise key 1006>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body no numeric noise key 1003>
<header id="masthead" class="site-header">
<h1 class="site-title"><a href="/ko/</?php echo esc_url( home_url( '/' ) ); ?>"></a></h1>
</header> 테일 파일 (Tail File) footer.php 그렇다면 페이지 하단에 있는 모든 내용을 포함하고, 끝나기 전에 해당 내용을 실행하게 됩니다. wp_footer() 함수는 스크립트와 플러그인 기능을 로드하는 데 매우 중요합니다.
<footer id="colophon" class="site-footer">
<p>©</p>
</footer>
</body>
</html> 주 인덱스 템플릿을 조립합니다.
index.php 가장 기본적인 템플릿으로서, 그 역할은 다음과 같습니다: get_header() 그리고 get_footer() 함수는 시작 부분과 끝 부분에 필요한 코드를 포함하고 있으며, 중간에는 주요 반복문을 사용하여 내용을 출력합니다.
<main id="primary" class="site-main">
<?php
if ( have_posts() ) :
while ( have_posts() ) :
the_post();
?>
<article no numeric noise key 1006>
<h2><a href="/ko/</?php the_permalink(); ?>"></a></h2>
<div class="entry-content">
</div>
</article>
<?php
endwhile;
the_posts_navigation();
else :
echo '<p>暂无文章。</p>';
endif;
?>
</main>
؟php get_sidebar(); // 선택 사항 ؟php get_footer(); ?> 이 템플릿 내의 내용입니다. have_posts() 그리고 the_post() 함수들은 WordPress의 메인 루프(The Loop)를 구성하며, 모든 글의 내용을 출력하는 데 핵심적인 역할을 합니다. the_title()、the_content()、the_permalink() 반복문 내에서 해당하는 기사 데이터를 출력하는 데 사용됩니다.
고급 기능과 테마 컴포넌트를 통합하기
전문적인 테마는 콘텐츠를 효과적으로 표시할 뿐만 아니라 다양한 기능과 컴포넌트도 제공합니다. 이를 위해서는 WordPress의 함수 라이브러리와 훅 시스템을 깊이 이해하는 것이 필요합니다.
메뉴 내비게이션 기능을 추가하세요.
네비게이션 메뉴는 웹사이트의 핵심 구성 요소입니다. 먼저, 테마에 맞는 네비게이션 메뉴를 설정해야 합니다. functions.php 파일 내에서 사용합니다. register_nav_menus() 이 함수는 하나 이상의 메뉴 항목을 등록합니다.
function my_custom_theme_setup() {
register_nav_menus( array(
'primary' => __( '主导航菜单', 'my-custom-theme' ),
'footer' => __( '页脚菜单', 'my-custom-theme' ),
) );
}
add_action( 'after_setup_theme', 'my_custom_theme_setup' ); 그런 다음, 템플릿 파일(예: header.php)에서 메뉴를 표시하고 싶은 위치에 사용하세요. wp_nav_menu() 함수가 그것을 호출합니다.
추천 읽기 WordPress 테마 개발 입문 실전 가이드: 제로에서 시작하여 사용자 정의 테마 아키텍처와 템플릿을 만들어보기。
<?php
wp_nav_menu( array(
'theme_location' => 'primary',
'menu_class' => 'primary-menu',
'container' => 'nav',
'container_class'=> 'main-navigation',
) );
?> 이제 사용자는 WordPress 관리자의 “외관” -> “메뉴”에서 메뉴를 생성한 후, 이를 “주 메뉴” 위치에 할당할 수 있습니다.
기사의 축소 이미지와 도구 모음을 활성화합니다.
기사의 특징적인 이미지(썸네일)와 위젯 Widget은 콘텐츠 표현의 유연성을 높이는 데 중요한 기능입니다. 마찬가지로… functions.php 여기서는 주제 지원 함수(theme support function)를 사용하여 해당 기능들을 활성화합니다.
function my_custom_theme_features() {
// 启用文章和页面特色图像
add_theme_support( 'post-thumbnails' );
// 为文章定义缩略图尺寸
set_post_thumbnail_size( 1200, 630, true );
// 启用小工具和选择性刷新
add_theme_support( 'widgets' );
add_theme_support( 'customize-selective-refresh-widgets' );
}
add_action( 'after_setup_theme', 'my_custom_theme_features' ); 사이드바에 위젯 영역을 등록하는 데 사용할 수 있습니다. register_sidebar() 함수.
function my_custom_theme_widgets_init() {
register_sidebar( array(
'name' => __( '주 측바', 'my-custom-theme' ),
'id' => 'sidebar-1',
'description' => __( '주 측바 위젯을 여기에 추가하세요.', 'my-custom-theme' ),
'before_widget' => ' <',
) );
}'<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
}
add_action( 'widgets_init', 'my_custom_theme_widgets_init' ); 그 후에는 다음과 같은 작업을 진행할 수 있습니다: sidebar.php 템플릿 파일에서 사용됩니다. dynamic_sidebar( 'sidebar-1' ) 이 영역을 출력해 주세요.
Responsive Design and Style Organization
현대 웹사이트는 모든 장치에서 잘 보여져야 합니다. 이는 사용하는 테마가 반응형(responsive)이어야 한다는 것을 의미합니다.
모바일 우선(Mobile First) 원칙에 따라 CSS를 적용하는 것입니다.
In style.css 중에서는 모바일 기기의 기본 스타일부터 시작하여, 미디어 쿼리(Media Queries)를 사용하여 대형 화면에서의 스타일을 점차적으로 개선해 나갑니다. 이 방식을 통해 핵심 콘텐츠가 모든 기기에서 우선적으로 표시될 수 있도록 보장할 수 있습니다.
/* 基础样式 (移动设备) */
.site-header {
padding: 1rem;
text-align: center;
}
.site-main {
padding: 1rem;
}
.widget {
margin-bottom: 2rem;
}
/* 中等屏幕 (平板) */
@media (min-width: 768px) {
.site-header {
display: flex;
justify-content: space-between;
align-items: center;
text-align: left;
}
.site-main {
display: grid;
grid-template-columns: 2fr 1fr;
gap: 2rem;
}
}
/* 大屏幕 (桌面) */
@media (min-width: 1024px) {
.container {
max-width: 1200px;
margin: 0 auto;
}
} 자바스크립트를 안전하게 도입하기
성능과 충돌을 방지하기 위해, WordPress에서 권장하는 방법을 사용해야 합니다. wp_enqueue_script() JavaScript 파일을 로드하는 방법입니다. 이 과정은 보통… functions.php 중에서 완료됩니다.
function my_custom_theme_scripts() {
// 为主题的主样式表排队
wp_enqueue_style( 'my-custom-theme-style', get_stylesheet_uri(), array(), wp_get_theme()->get( 'Version' ) );
// 为主题的主 JavaScript 文件排队
wp_enqueue_script( 'my-custom-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), wp_get_theme()->get( 'Version' ), true );
// 为评论回复链接添加条件脚本(如果页面支持评论)
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
add_action( 'wp_enqueue_scripts', 'my_custom_theme_scripts' ); 이 방법을 통해 WordPress가 의존 관계를 관리할 수 있으며, 플러그인 및 기타 테마가 안전하게 상호 작용할 수 있는 중앙 제어 지점을 제공합니다.
요약
커스터마이즈된 WordPress 테마를 처음부터 개발하는 것은 체계적인 작업으로, HTML/CSS/자바스크립트 프론트엔드 기술, PHP 서버사이드 로직 및 WordPress 코어 아키텍처에 대한 깊은 이해를 동시에 요구합니다. 핵심 프로세스에는 환경 설정 및 테마 파일 구조 이해, 특히 테마 계층 및 메인 루프를 통한 내용 출력 등이 포함됩니다. functions.php 고급 기능들(예: 통합 메뉴, 썸네일, 툴바 등)을 포함시키고, 반응형 디자인을 적용하며 스타일과 스크립트를 안전하게 구성함으로써 테마의 현대성과 고성능을 보장하세요. 이러한 단계들을 따르면 특정 요구사항을 충족시키는 독특한 웹사이트를 구축할 수 있을 뿐만 아니라, WordPress의 작동 방식을 깊이 이해하게 되어 더 복잡한 개발 과제에도 효과적으로 대처할 수 있는 탄탄한 기반을 마련할 수 있습니다.
자주 묻는 질문
WordPress 테마를 개발하려면 PHP에 대해 잘 알고 있어야 하나요?
네, 탄탄한 PHP 기초가 필수적입니다. WordPress 자체가 PHP로 구축되었기 때문에, 그 핵심 함수, 템플릿 태그, 후크 시스템, 데이터베이스와의 상호작용 등은 모두 PHP 없이는 이루어질 수 없습니다. 페이지 빌더나 서브테마를 사용하면 어느 정도의 커스터마이징이 가능하지만, 기능이 완전하고 논리적으로 명확한 커스텀 테마를 처음부터 만들기 위해서는 PHP에 대한 깊은 이해가 필수적입니다.
내 테마가 다국어 번역을 지원하도록 하려면 어떻게 해야 하나요?
WordPress의 국제화(i18n) 및 현지화(l10n) 기능을 사용해야 합니다. 코드 내에서 사용자에게 표시되는 모든 텍스트 문자열은 반드시 번역 함수로 감싸야 합니다. 예를 들어: __('文本', 'my-custom-theme') 또는 _e('文本', 'my-custom-theme')동시에, 다음 사항을 반드시 확인하십시오:style.css“의 헤더와 모든 내용”load_theme_textdomain()호출 중에 올바르게 설정되었습니다.Text Domain그런 다음, Poedit와 같은 도구를 사용하여 생성할 수 있습니다..pot템플릿 파일은 번역가가 작업을 수행하는 데 사용하는 파일입니다..po그리고.mo언어 파일.
자주제(subtopic)란 무엇인가요? 그리고 저는 자주제를 사용해야 할까요?
자식 테마(Child Theme)는 다른 테마(부모 테마, Parent Theme)에 의존하는 테마로, 자체의 스타일 파일과 일부 수정된 템플릿 파일만을 포함합니다. 부모 테마가 업데이트되더라도 자식 테마에 가한 수정 사항은 유지됩니다. 기존 테마의 스타일을 변경하거나 몇 가지 기능을 추가/조정하는 데 자식 테마를 사용하는 것이 강력히 권장됩니다(예: 사용자 정의 함수를 추가하거나 템플릿 파일을 일부 수정하는 경우). 이 방식은 더 안전하고 유지보수가 더 간편합니다. 하지만 새로 만들고자 하는 구조와 논리가 기존 테마와 완전히 다를 경우에는 처음부터 독립적인 테마를 개발하는 것이 더 나은 선택입니다.
개발이 완료된 후에는 테마를 WordPress 공식 디렉터리에 어떻게 게시할 수 있을까요?
WordPress.org 테마 디렉터리에 테마를 제출하는 것은 엄격한 절차를 따라야 합니다. 먼저, 여러분의 코드는 WordPress의 코딩 표준과 테마 검토 요구사항을 준수해야 하며, 여기에는 보안성, 접근성, 코드 품질 등이 포함됩니다. WordPress.org 계정이 필요하며, 코드는 SVN 저장소에 제출되어야 합니다. 제출하는 테마는 반드시 GPL 호환 라이선스를 사용해야 하며, 유료 플러그인을 포함하거나 숨겨진 악성 코드가 없어야 합니다. 전체 검토 과정은 몇 주가 걸릴 수 있으며, 검토자들은 피드백을 제공할 것입니다. 여러분은 이 피드백에 따라 수정을 가하여 테마가 승인될 때까지 작업을 반복해야 합니다.
다음 단계는 무엇인가요?
확장된 독서 및 실무 지식
다음은 이 도움말의 주제와 관련이 있으며 더 깊이 있게 읽기에 적합합니다. 현재 문제와 가장 가까운 문서부터 시작하여 점차 주변 주제로 확장하는 것이 우선순위를 정하는 것이 좋습니다.