워드프레스 테마 개발 가이드: 개인화된 웹사이트를 처음부터 만들기

3분 읽기
2026-03-18
2026-06-04
2,773
아래 링크를 통해 쇼핑하면 추가 비용 없이 수수료를 받을 수 있습니다.

WordPress 테마란 무엇이며 그 기본 구조는 어떻게 되어 있을까요?

anWordPress테마는 웹사이트의 외관과 표시 방식을 정의하는 것으로, 템플릿, 스타일시트, PHP 코드 등으로 구성된 일련의 파일들의 집합입니다. 이러한 파일들이 함께 작동하여 웹사이트의 디자인과 기능을 결정합니다. 테마의 기본 구조를 이해하는 것은 개발을 시작하는 첫 번째 단계입니다. 핵심 파일들에는 보통 다음과 같은 것들이 포함됩니다:
- style.css주제의 주요 스타일 시트로, 주제에 대한 메타정보(주제 이름, 작성자, 설명 등)도 포함되어 있습니다.
- index.php기본 메인 템플릿 파일은 테마에 필수적인 파일입니다.
- functions.php주제 기능 추가, 등록 스크립트 및 스타일 적용, 사용자 정의 기능 정의 등에 사용됩니다.
- header.php웹사이트 헤더 영역을 정의합니다.
- footer.php웹사이트 푸터 영역을 정의합니다.
- page.php 그리고 single.php각각 “페이지”와 “기사”를 렌더링하는 데 사용됩니다.

이 템플릿 파일들은 특정 규칙이나 표준을 따릅니다.WordPress이 템플릿 계층 구조를 통해 개발자는 특정 이름의 파일을 생성함으로써 기본적인 표시 로직을 덮어쓸 수 있으며, 이를 통해 다양한 콘텐츠 유형의 출력을 정확하게 제어할 수 있습니다.

시작하기 전에, 로컬 개발 환경(예: Local by Flywheel, XAMPP) 또는 테스트 서버가 필요합니다. 코드 편집기(예: VS Code)와 FTP 클라이언트(배포용)도 반드시 준비해야 합니다.

추천 읽기 워드프레스 테마 개발 입문 가이드: 개인화된 웹사이트를 처음부터 만들기

첫 번째 기본 테마를 만드세요.

자, 가장 간단하지만 완전히 사용 가능한 테마를 만드는 것부터 시작해 보겠습니다. 먼저, 여러분의…wp-content/themes예를 들어, 카테고리 아래에 새 폴더를 만들어 보세요.my-first-theme이곳은 모든 주제 파일이 저장되어 있는 위치입니다.

UltaHost의 WordPress 호스팅 서비스
30일 환불 보장, 무제한 대역폭 및 데이터베이스 이용, 무료 DDoS 보호 서비스 제공. 3년 구매 시 50% 용량이 할인됩니다.

주제 스타일 및 정보 정의

Createstyle.css파일을 생성한 후, 파일의 맨 위에 다음과 같은 주석 블록을 추가하세요. 이것은…WordPress한 주제를 식별하기 위해 필요한 것들입니다.

/*
Theme Name: My First Theme
Theme URI: https://example.com/my-first-theme
Author: Your Name
Author URI: https://yourwebsite.com
Description: 这是一个用于学习的自定义WordPress主题。
Version: 1.0
License: GNU General Public License v2 or later
Text Domain: my-first-theme
*/

이 주석 블록은 해당 주제에 대한 정보를 제공합니다.WordPress백엔드에서 표시되는 정보입니다.Text Domain국제화를 위해 사용되며, 테마의 식별자입니다.

핵심 템플릿 파일을 구축합니다.

다음으로, 가장 기본적인 것을 만들어 봅시다.index.php이 파일은 모든 페이지의 기본 템플릿입니다.

<!DOCTYPE html>
<html no numeric noise key 1014>
<head>
    <meta charset="<?php bloginfo('charset'); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
</head>
<body no numeric noise key 1011>
    <header>
        <h1><a href="/ko/</?php echo esc_url(home_url('/')); ?>"><?php bloginfo('name'); ?></a></h1>
        <p><?php bloginfo('description'); ?></p>
    </header>

<main>
        <?php
        if (have_posts()) :
            while (have_posts()) : the_post();
                ?>
                <article>
                    <h2><a href="/ko/</?php the_permalink(); ?>"></a></h2>
                    <div></div>
                </article>
                &lt;?php
            endwhile;
        else :
            echo &#039;<p>没有找到内容。</p>';
        endif;
        ?&gt;
    </main>

<footer>
        <p>©</p>
    </footer>
    
</body>
</html>

이 파일은 여러 개의 핵심 구성 요소를 사용하고 있습니다.WordPress템플릿 태그들, 예를 들어…the_post(), the_title(), the_content()기사를 반복적으로 출력하도록 하세요.wp_head()그리고wp_footer()후크들은 매우 중요합니다. 왜냐하면 후크들 덕분에…WordPress핵심 코드, 플러그인, 그리고 기타 스크립트들을 사용하여 필요한 코드를 삽입하세요.

추천 읽기 WordPress 테마 개발: 전문级 웹사이트 테마를 제작하는 완벽한 가이드

파일을 서버에 업로드한 후에는 원하는 곳에서 해당 파일을 사용할 수 있습니다.WordPress백엔드의 “외관(Appearance)” → “테마(Theme)”에서 해당 테마를 확인하고 활성화했습니다. 이제 귀하의 웹사이트는 이 매우 심플한 레이아웃을 사용하게 됩니다.

주제 기능과 유연성을 향상시키기

기본 구조를 갖춘 후에는 모듈화와 기능성을 도입하여 테마를 더 전문적이고 유지보수하기 쉽게 만들어야 합니다.

핵심 기능 파일을 가져옵니다.

Createfunctions.php이 파일은 주제(테마)의 “뇌”와 같은 역할을 합니다. 여기서 우리는 주제 기능의 지원을 추가하고, 등록 기능을 위한 네비게이션 메뉴를 구성하며, 스타일과 스크립트를 로드합니다.

호스팅닷컴 공유 호스팅
AMD EPYC CPU, NVMe SSD 스토리지 및 LiteSpeed를 통한 고성능, 연중무휴 24시간 전문가 사내 지원, SSL, 무차별 공격, 멀웨어 및 DDoS 보호를 포함한 고급 보안 조치, 최대 73%의 비용 절감.
<?php
function my_theme_setup() {
    // 让WordPress管理文档标题
    add_theme_support('title-tag');
    // 启用文章和页面的特色图像功能
    add_theme_support('post-thumbnails');
    // 注册一个主菜单
    register_nav_menus(array(
        'primary' => __('主导航菜单', 'my-first-theme'),
    ));
    // 为RSS feed链接添加支持
    add_theme_support('automatic-feed-links');
}
add_action('after_setup_theme', 'my_theme_setup');

function my_theme_scripts() {
    // 引入主样式表
    wp_enqueue_style('main-style', get_stylesheet_uri());
    // 引入自定义JavaScript文件
    wp_enqueue_script('my-theme-script', get_template_directory_uri() . '/js/script.js', array(), null, true);
}
add_action('wp_enqueue_scripts', 'my_theme_scripts');
?>

add_theme_support()이 함수는 최신 기능을 활성화합니다.WordPress주제의 일반적인 기능들. 사용법.wp_enqueue_style()그리고wp_enqueue_script()이것은 리소스를 로드하는 표준적인 방법으로, 종속성과 버전 관리를 올바르게 처리할 수 있습니다.

분할된 페이지 헤더 및 푸터 템플릿 (Split Page Header and Footer Templates)

"将"index.php페이지 헤더와 푸터의 코드를 별도의 파일로 분리하면 코드의 재사용성을 높일 수 있습니다. 생성해 보세요.header.php, 포함하는 내용은 다음과 같습니다:열려면태그 앞에 있는 모든 코드. 생성하기.footer.php, 포함하는 내용은 다음과 같습니다: 종료(폐쇄)하는 과정에서 발생하는 사항들입니다.태그 다음부터…그 모든 코드를 먼저 작성한 다음, 그 후에…index.php중국에서 사용하세요.get_header()그리고get_footer()함수들이 그것들을 사용합니다.

사이드바 템플릿을 생성합니다.

Create one.sidebar.php파일 안에는 작은 도구들을 배치할 수 있는 영역이 있습니다. 먼저,functions.php중국에서는 ‘소형 도구 영역’(小工具区域)을 등록할 수 있습니다.

추천 읽기 제로에서 시작하여 전문가가 되기까지: WordPress 테마 개발의 완벽한 가이드와 실전 튜토리얼

function my_theme_widgets_init() {
    register_sidebar(array(
        'name'          =&gt; __('主侧边栏', 'my-first-theme'),
        'id'            =&gt; 'sidebar-1',
        'description'   =&gt; __('在这里添加小工具。', 'my-first-theme'),
        'before_widget' =&gt; '<section id="%1$s" class="widget %2$s">',
        'after_widget'  =&gt; '</section>',
        'before_title'  =&gt; '<h2 class="widget-title">',
        'after_title'   =&gt; '</h2>',
    ));
}
add_action('widgets_init', 'my_theme_widgets_init');

그런 다음,sidebar.php중간에 있는 작은 도구들을 호출하는 영역:

<?php if (is_active_sidebar('sidebar-1')) : ?>
    <aside>
        <?php dynamic_sidebar('sidebar-1'); ?>
    </aside>
<?php endif; ?>

마지막으로,index.php여기서는 주 콘텐츠 영역 옆에 해당 기능을 사용할 수 있습니다.get_sidebar()그것을 호출하기 위해.

InterServer 공유 호스팅
공유 호스팅 월 $2.50 USD, 첫 달 $0.1 USD 프로모션 코드 tryinterserver, 461개 클라우드 앱 스크립트, 원클릭 설치.

Application Styles and Responsive Design

스타일이 없는 테마는 매력적이지 않습니다. 우리는 CSS를 사용하여 테마를 더 아름답게 만들고 다양한 장치에 맞게 조정할 것입니다.

기본 레이아웃 스타일을 구축합니다.

Instyle.css주석 블록 아래에 기본 스타일을 추가하기 시작합니다. 먼저 몇 가지 CSS 변수와 기본 스타일을 정의한 다음, 기본 레이아웃을 설정합니다.

:root {
    --primary-color: #0073aa;
    --text-color: #333;
    --background-color: #f5f5f5;
}
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    line-height: 1.6;
    color: var(--text-color);
    background: var(--background-color);
    max-width: 1200px;
    margin: 0 auto;
    padding: 20px;
}
header {
    background: white;
    padding: 2rem;
    margin-bottom: 2rem;
    border-bottom: 3px solid var(--primary-color);
}
main {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 2rem;
}
article {
    background: white;
    padding: 1.5rem;
    margin-bottom: 1.5rem;
    border-radius: 5px;
}

반응형 네비게이션 메뉴를 구현하기

Regarding the matter of...functions.php중에 등록된 네비게이션 메뉴에 스타일을 추가하고 모바일 기기에서도 잘 보이도록 수정해야 합니다. 먼저,header.php메뉴 출력:

<nav>
    <?php
    wp_nav_menu(array(
        'theme_location' => 'primary',
        'menu_class'     => 'primary-menu',
    ));
    ?>
</nav>

그런 다음 CSS에 스타일을 추가하고, 미디어 쿼리를 사용하여 모바일 기기에 맞게 디자인을 조정합니다.

.primary-menu {
    display: flex;
    list-style: none;
}
.primary-menu li {
    margin-left: 1.5rem;
}
.primary-menu a {
    text-decoration: none;
    color: var(--text-color);
    font-weight: 500;
}
.primary-menu a:hover {
    color: var(--primary-color);
}

/* 响应式设计 */
@media (max-width: 768px) {
    main {
        grid-template-columns: 1fr; /* 移除侧边栏 */
    }
    .primary-menu {
        flex-direction: column;
    }
    .primary-menu li {
        margin: 0.5rem 0;
    }
}

기사의 특징적인 이미지를 최적화합니다.

Since we have enabled it…post-thumbnails지원됩니다. 사용이 가능합니다.index.php또는single.php`for` 루프 내에서 사용합니다.the_post_thumbnail()이 함수는 특별한 이미지를 표시하며, 크기를 제어하기 위해 해당 이미지에 CSS 클래스를 추가합니다.

요약

이 가이드를 통해 여러분은…WordPress주제 개발의 핵심 프로세스: 주제의 기본 파일 구조를 이해하는 것부터 첫 번째로 사용 가능한 주제를 만드는 것까지, 그리고 그 후에…functions.php기능을 강화하고 템플릿을 분리하여 모듈화를 구현한 후, CSS를 사용하여 디자인을 개선하고 반응형 디자인을 완성합니다.WordPress주제의 핵심은 템플릿의 계층 구조, 핵심 함수, 그리고 훅(Hooks) 시스템을 이해하는 데 있습니다. 이 작은 출발점에서부터 시작하여, 사용자 정의된 글 유형이나 고급 테마 옵션 등을 더 탐구해 나갈 수 있습니다.Gutenberg블록 편집기는 더 복잡한 기능들을 지원함으로써, 개인의 요구사항을 진정으로 충족시키는 전문 웹사이트를 제작할 수 있도록 해줍니다.

자주 묻는 질문

###: 주제 개발은 반드시 처음부터 시작해야만 하나요?
꼭 그런 것은 아닙니다. 기존에 존재하는 가벼운 형태의 “스타터 테마(Starter Theme)”나 “프레임워크(Framework)”를 기반으로 개발을 진행할 수도 있습니다. 예를 들어, Underscores(_s)나 Sage와 같은 도구들이 있죠. 이러한 도구들은 우수한 코드 구조와 모범 사례를 제공하여 기본적인 설정 작업에 소요되는 시간을 상당히 절약해 줍니다. 그렇게 하면 더 많은 시간을 독특한 디자인과 기능 구현에 집중할 수 있습니다.

내 테마가 서브테마를 지원하도록 설정하려면 어떻게 해야 하나요?

주제를 안전하게 사용자 정의할 수 있도록 하려면, 해당 주제를 “부모 주제(parent theme)”로 설계하여 사용자가 스타일과 템플릿을 재정의할 수 있는 “자식 주제(child theme)”를 생성할 수 있도록 해야 합니다. 주제가 올바른 템플릿 구조를 따르고 있는지 반드시 확인해야 하며, 이를 통해 사용자가 주제의 기능을 원하는 대로 확장하고 수정할 수 있도록 해야 합니다.style.css자원을 참조할 때 절대 경로를 사용하는 것을 피하고, 대신 다른 방법을 사용해야 합니다.get_template_directory_uri()등 함수들입니다. 하위 주제(subtopic)는 하나만 필요합니다.style.css그리고 선택 사항도 포함됩니다.functions.php이렇게 하면 모든 상위 테마의 기능을 상속받을 수 있습니다.

개발 중에 흔히 발생하는 오류들을 어떻게 디버깅할 수 있을까요?

열기WordPress디버깅 모드는 매우 중요합니다. 당신의…wp-config.php파일 내에서, 해당 내용을 처리할 것입니다.WP_DEBUG상수를 다음과 같이 설정합니다:true이 설정을 통해 모든 PHP 오류, 경고, 알림이 화면에 표시됩니다. 또한, 브라우저의 개발자 도구(F12 키 사용)를 활용하여 CSS 및 JavaScript 오류를 확인하고, 콘솔과 네트워크 탭을 살펴볼 수 있습니다.

개발이 완료되었다면, 제 테마를 어떻게 게시할 수 있을까요?

만약 당신이 해당 주제를 공식적인 곳에 제출하고 싶다면…WordPress테마 디렉터리는 코드 품질, 보안성, 국제화, 접근성 등을 포함한 테마 심사 기준을 엄격히 준수해야 합니다. 공식 매뉴얼을 자세히 읽어보시기 바랍니다. 자체적으로 테마를 배포하는 경우, 모든 테마 파일을 ZIP 형식으로 압축하여 사용자가 직접 다운로드할 수 있도록 해야 합니다.WordPress백엔드의 “테마 업로드” 기능을 사용하여 설치를 진행하세요.