การเริ่มต้นพัฒนา WordPress Theme: สร้างธีมแบบกำหนดเองตั้งแต่เริ่มต้น

อ่าน 3 นาที
2026-03-11
2026-06-06
2,344
I earn commissions when you shop through the links below, at no additional cost to you.

ต้องการสร้างธีม WordPress ที่กำหนดเอง ขั้นแรกต้องเข้าใจโครงสร้างพื้นฐานของมัน ธีม WordPress ที่เรียบง่ายที่สุดโดยพื้นฐานแล้วคือโฟลเดอร์ที่อยู่ในไดเรกทอรี/wp-content/themes/ซึ่งประกอบด้วยไฟล์ที่จำเป็นสองไฟล์:style.cssindex.phpไฟล์แรกไม่เพียงกำหนดสไตล์ของธีม แต่ที่สำคัญกว่าคือส่วนความคิดเห็นส่วนหัวของไฟล์ประกอบด้วยข้อมูลเมตาของธีม เช่น ชื่อธีม ผู้เขียน คำอธิบาย ฯลฯ ไฟล์หลังคือไฟล์เทมเพลตเริ่มต้น เมื่อ WordPress ไม่พบเทมเพลตที่เจาะจงมากขึ้น ก็จะใช้ไฟล์นี้

นอกจากสองไฟล์นี้แล้ว ธีมที่สมบูรณ์แบบมักจะมีไฟล์เทมเพลตอื่นๆ ด้วย เช่น สำหรับแสดงโพสต์เดี่ยวsingle.phpสำหรับแสดงรายการบทความarchive.phpและสำหรับแสดงหน้าpage.phpการเข้าใจและสร้างไฟล์เทมเพลตเหล่านี้เป็นหัวใจสำคัญของการพัฒนาเทม

ก่อนเริ่มเขียนโค้ด แนะนำให้ตั้งค่าเซิร์ฟเวอร์ในเครื่อง เช่น ใช้ XAMPP, MAMP หรือ Local by Flywheel ซึ่งจะช่วยให้คุณทดสอบและดีบั๊กได้อย่างอิสระโดยไม่กระทบกับเว็บไซต์ที่ออนไลน์อยู่ พร้อมทั้งตรวจสอบให้แน่ใจว่าโปรแกรมแก้ไขข้อความหรือ IDE (เช่น VS Code, PhpStorm) ของคุณพร้อมใช้งาน และมีความรู้พื้นฐานเกี่ยวกับ PHP, HTML, CSS และ JavaScript

แนะนำให้อ่าน คู่มือเริ่มต้นการพัฒนา WordPress Theme: สร้างธีมแรกของคุณตั้งแต่ศูนย์

สร้างไฟล์พื้นฐานและโครงสร้างของธีม

สร้างโฟลเดอร์ธีมและสไตล์ชีต

ก่อนอื่นใน/wp-content/themes/ของ WordPress เช่น ตั้งชื่อว่าmy-first-themeของ WordPress จากนั้น ภายในโฟลเดอร์นั้น ให้สร้างstyle.css文件,并输入以下文件头信息:

UltaHost WordPress โฮสติ้ง
การรับประกันคืนเงินภายใน 30 วัน, แบนด์วิธและฐานข้อมูลไม่จำกัด, การป้องกัน DDoS ฟรี, ซื้อ 3 ปีลดราคา 50%
/*
Theme Name: 我的第一个主题
Theme URI: https://example.com/my-first-theme/
Author: 你的名字
Author URI: https://example.com/
Description: 这是一个用于学习的自定义WordPress主题入门示例。
Version: 1.0.0
License: GNU General Public License v2 or later
Text Domain: my-first-theme
*/

这段注释是WordPress识别主题的关键。接下来,你可以在这个CSS文件中添加一些基础样式。

สร้างไฟล์เทมเพลตหลัก

จากนั้น สร้างindex.php文件。这是所有页面的后备模板。一个最简单的index.php可以只包含调用网站头部、循环内容以及网站尾部的基本结构。

<!DOCTYPE html>
<html no numeric noise key 1011>
<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?php wp_head(); ?>
</head>
<body no numeric noise key 1008>
    <?php wp_body_open(); ?>
    <header>
        <h1><a href="/th/</?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();
                the_content();
            endwhile;
        endif;
        ?>
    </main>
    <footer>
        <p>©</p>
    </footer>
    <?php wp_footer(); ?>
</body>
</html>

这个文件使用了多个WordPress核心函数,如wp_head()body_class()the_content()等,它们对于主题的正常运作至关重要。

理解并实现模板层级

WordPress采用一套名为“模板层级”的规则来决定对于特定的页面请求应该使用哪个模板文件。掌握这个层级是高效开发主题的关键。

แนะนำให้อ่าน การสร้างเว็บไซต์มืออาชีพ: คู่มือฉบับสมบูรณ์สำหรับการพัฒนาและปรับแต่งธีม WordPress

ไฟล์เทมเพลตทั่วไปและหน้าที่ของพวกเขา

当访问网站首页时,WordPress会按顺序寻找front-page.phphome.phpและสุดท้ายคือindex.php。对于博客文章列表页,它会寻找home.php。对于单篇文章,它会优先使用single-post.phpหรือทั่วไปsingle.php。对于静态页面,则使用page.php。分类目录页对应category.php,搜索页对应search.php,404错误页对应404.php

通过创建这些特定的模板文件,你可以为网站的不同部分设计完全不同的布局和样式。

ใช้ส่วนประกอบเทมเพลตเพื่อแยกโค้ด

为了保持代码的整洁和可复用性,应该将重复的部分拆分成独立的“模板部件”文件。最常见的拆分是将页头(Header)、页脚(Footer)和侧边栏(Sidebar)分离出来。

hosting.com 共享主机
高性能,配备 AMD EPYC CPU、NVMe SSD 存储和 LiteSpeed,全天候24小时、全天候的专家内部支持,高级安全措施,包括 SSL、暴力破解、恶意软件和 DDoS 防护,节省高达 73%

สร้างheader.phpที่อยู่ในไดเรกทอรีรูทของ WordPress เปลี่ยนindex.php标签开始到标签之前的所有代码移动进去。然后在原位置使用get_header()การเรียกใช้ฟังก์ชัน

// 在 index.php 中替换原来的代码
<?php get_header(); ?>

类似地,创建footer.php文件存放页脚代码,并使用get_footer()调用。你还可以创建sidebar.phpและใช้get_sidebar()调用。这种方式极大地提高了代码的模块化程度。

รวมฟังก์ชันหลักของ WordPress

引入文章循环与特色图像

“循环”是WordPress用来从数据库中获取并显示文章的核心机制。在index.phpsingle.phpในนั้น เราใช้if ( have_posts() ) : while ( have_posts() ) : the_post();来启动循环。在循环内部,你可以使用一系列模板标签来输出文章信息。

แนะนำให้อ่าน คู่มือปฏิบัติจริงในการพัฒนา WordPress ปลั๊กอินแบบสมบูรณ์ ตั้งแต่เริ่มต้นจนถึงการสร้างปลั๊กอินแรกของคุณ

ตัวอย่างเช่น ใช้the_title()แสดงชื่อเรื่องบทความthe_permalink()แสดงลิงก์ของโพสต์the_content()แสดงเนื้อหาของบทความ,the_excerpt()输出文章摘要。要支持文章的特色图像,首先需要在functions.php文件中添加主题支持声明:

add_theme_support( 'post-thumbnails' );

然后,在模板文件的循环中,可以使用the_post_thumbnail()来输出特色图像。

โฮสติ้งแบบแชร์ของ InterServer
共享主机每月 $2.50 USD , 首月 $0.1 USD 优惠码 tryinterserver, 461个云应用脚本,一键安装。

创建functions.php增强主题

functions.php文件是你的主题的“控制中心”,它不是必须的,但几乎每个主题都会使用它。在这里,你可以添加功能、注册菜单、定义小工具区域、引入脚本和样式表。

พื้นฐานfunctions.php可能包含以下内容:

__( '顶部菜单', 'my-first-theme' ),
            'footer-menu' =&gt; __( '底部菜单', 'my-first-theme' ),
        )
    );
}
add_action( 'init', 'mytheme_register_menus' );

// 添加小工具区域支持
function mytheme_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', 'mytheme_widgets_init' );

// 引入主题样式表和脚本
function mytheme_enqueue_scripts() {
    // 引入主题的主样式表
    wp_enqueue_style( 'mytheme-style', get_stylesheet_uri(), array(), wp_get_theme()-&gt;get( 'Version' ) );
    // 引入主JavaScript文件
    wp_enqueue_script( 'mytheme-script', get_template_directory_uri() . '/js/main.js', array(), wp_get_theme()-&gt;get( 'Version' ), true );
}
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_scripts' );
?&gt;

เพิ่มสไตล์และการออกแบบที่ตอบสนอง

สร้าง CSS framework พื้นฐาน

style.css开始,为你的主题建立基础的视觉样式。可以先设置全局的盒模型、字体和颜色。

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    line-height: 1.6;
    color: #333;
    background-color: #f9f9f9;
}

.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

ใช้การออกแบบที่ตอบสนองโดยให้ความสำคัญกับอุปกรณ์เคลื่อนที่เป็นหลัก

现代主题必须是响应式的。采用移动端优先的策略,先为小屏幕设计样式,然后使用媒体查询(Media Queries)为大屏幕添加或覆盖样式。

/* 移动端基础样式 */
.main-navigation ul {
    display: flex;
    flex-direction: column;
    list-style: none;
}
.main-navigation li {
    border-bottom: 1px solid #ddd;
}

/* 平板及以上设备 */
@media (min-width: 768px) {
    .main-navigation ul {
        flex-direction: row;
    }
    .main-navigation li {
        border-bottom: none;
        margin-right: 2rem;
    }
    .content-area {
        width: 70%;
        float: left;
    }
    .widget-area {
        width: 28%;
        float: right;
    }
}

/* 桌面设备 */
@media (min-width: 1024px) {
    .container {
        padding: 0 40px;
    }
}

确保图片也是响应式的,可以通过CSS设置max-width: 100%; height: auto;,或者使用WordPress自带的srcsetคุณสมบัติ (the_post_thumbnail()默认会输出)。

สรุป

从零开始开发一个WordPress主题是一个系统性的学习过程,它涵盖了从创建基础文件结构、理解模板层级、拆分模板部件,到通过functions.php集成核心功能,最后进行样式设计与响应式适配。这个过程不仅能让你深度掌握WordPress的工作原理,还能让你获得完全控制网站外观与功能的能力。记住,从一个极简的style.cssindex.php开始,逐步添加功能并进行测试,是安全且高效的学习路径。你的第一个主题可能很简单,但它将为你未来构建更复杂、更专业的项目打下坚实的基础。

คำถามที่พบบ่อย (FAQ)

การพัฒนา WordPress ธีมต้องเรียนรู้ภาษาโปรแกรมใดบ้าง?

开发一个功能完整的WordPress主题,主要需要掌握PHP、HTML、CSS和JavaScript。PHP是核心,用于处理逻辑和调用WordPress函数;HTML构建页面结构;CSS负责样式和布局;JavaScript则用于实现交互效果和动态功能。对SQL有基本了解也有助于理解WordPress的数据查询。

ทำไม Theme ที่กำหนดเองของฉันจึงไม่แสดงในหน้าบริหาร?

นี่มักเกิดจากstyle.css文件头注释信息错误或缺失导致的。请确保该文件位于主题文件夹的根目录,并且文件开头的注释块格式正确,包含了“Theme Name”等必填信息。此外,检查主题文件夹的权限是否正确,以及style.css文件本身没有语法错误。

### ฉันจะเพิ่มเทมเพลตหน้าประจำหน้าที่กำหนดเองให้กับธีมของฉันได้อย่างไร

ก่อนอื่น ในไดเรกทอรีธีมของคุณ ให้สร้างไฟล์ PHP ใหม่ เช่นtemplate-fullwidth.php。在这个文件的最顶部,添加一段特殊的注释来定义模板名称。然后,你可以在这个文件里编写任何你想要的PHP和HTML代码,记得从其他模板文件(如page.php)复制循环等基本结构。创建完成后,在 WordPress 后台编辑页面时,就可以在“页面属性”的“模板”下拉框中看到并选择你创建的自定义模板了。

开发时如何安全地调试PHP错误?

แนะนำให้เปิดใช้งานโหมดดีบักของ WordPress ในไฟล์wp-config.phpของสภาพแวดล้อมการพัฒนาท้องถิ่น โดยการตั้งค่าWP_DEBUGเป็นtrue。这会将所有PHP错误、警告和通知显示在屏幕上。对于更深入的调试,可以使用WP_DEBUG_LOGบันทึกข้อผิดพลาดไปยัง/wp-content/debug.log文件中。请注意,在网站上线前,务必关闭调试模式。