คู่มือการพัฒนา WordPress Theme ฉบับสมบูรณ์: สร้างธีมแบบกำหนดเองตั้งแต่เริ่มต้นจนสำเร็จ

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

สภาพแวดล้อมการพัฒนาและการเริ่มต้นโปรเจกต์

ก่อนเริ่มสร้างธีม WordPress ที่กำหนดเอง การตั้งค่าสภาพแวดล้อมการพัฒนาที่มีประสิทธิภาพเป็นขั้นตอนแรกที่สำคัญมาก นี่ไม่เพียงแต่จะรับประกันความถูกต้องของโค้ด แต่ยังช่วยเพิ่มประสิทธิภาพการพัฒนาและประสบการณ์การดีบักได้อย่างมาก

การติดตั้งสภาพแวดล้อมการพัฒนาท้องถิ่น

ขอแนะนำให้ใช้ซอฟต์แวร์เซิร์ฟเวอร์ท้องถิ่น เช่น Local by Flywheel, MAMP หรือ XAMPP ซึ่งสามารถตั้งค่าสภาพแวดล้อมการทำงานที่รวม PHP, MySQL และ Apache/Nginx บนคอมพิวเตอร์ของคุณได้อย่างรวดเร็ว หลังจากติดตั้งเซิร์ฟเวอร์ท้องถิ่นแล้ว ให้ดาวน์โหลดและติดตั้ง WordPress เวอร์ชันล่าสุด จากนั้น ในไดเรกทอรีการติดตั้ง WordPress wp-content/themes โฟลเดอร์ ภายใต้ ให้สร้างโฟลเดอร์ใหม่ เช่น my-custom-themeนี่จะเป็นไดเรกทอรีรากของธีมของคุณ

การสร้างไฟล์หลักของธีม

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

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

/*
Theme Name: My Custom Theme
Theme URI: https://yourdomain.com/
Author: Your Name
Author URI: https://yourdomain.com/
Description: 一个从零开始构建的自定义 WordPress 主题。
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-custom-theme
*/

Text Domain ใช้สำหรับการแปลภาษา มันจะทำหน้าที่เป็นตัวระบุสำหรับข้อความที่จะแปลในภายหลัง ต่อมา สร้าง index.php ไฟล์ สามารถเริ่มต้นด้วยโครงสร้าง HTML ง่ายๆ ก่อนได้ หลังจากสร้างไฟล์ทั้งสองนี้เสร็จแล้ว คุณจะสามารถเห็นและเปิดใช้งานธีมเปล่านี้ได้ใน WordPress ภายใต้ “รูปลักษณ์” -> “ธีม” แล้ว

UltaHost WordPress โฮสติ้ง
การรับประกันคืนเงินภายใน 30 วัน, แบนด์วิธและฐานข้อมูลไม่จำกัด, การป้องกัน DDoS ฟรี, ซื้อ 3 ปีลดราคา 50%

โครงสร้างธีมและลำดับชั้นของเทมเพลต

การทำความเข้าใจลำดับชั้นของเทมเพลตใน WordPress เป็นหัวใจสำคัญของการพัฒนาธีม มันกำหนดว่า WordPress จะเลือกไฟล์เทมเพลตใดในการแสดงผลโดยอัตโนมัติตามคำขอที่แตกต่างกัน (เช่น หน้าบทความ, หน้า, หน้าจัดเก็บหมวดหมู่)

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

WordPress จะค้นหาไฟล์เทมเพลตตามลำดับที่กำหนด กระบวนการพื้นฐานที่สุดคือการย้อนกลับจากเทมเพลตที่เฉพาะเจาะจงที่สุดไปหาเทมเพลตที่ทั่วไปที่สุด ตัวอย่างเช่น เมื่อเข้าถึงบทความเดี่ยว WordPress จะค้นหาตามลำดับดังนี้:single-post-{id}.php, single-post.php, single.phpและสุดท้ายคือ singular.phpหากไม่พบทั้งหมด จะใช้ index.phpในทำนองเดียวกัน หน้าหลักจะค้นหา front-page.phpก่อน แล้วจึงเป็น home.phpการเข้าใจลำดับชั้นนี้จะช่วยให้คุณสามารถควบคุมการจัดวางหน้าต่างๆ ได้อย่างแม่นยำโดยการสร้างไฟล์เทมเพลตเฉพาะ

สร้างไฟล์เทมเพลตที่ใช้บ่อย

นอกจาก index.phpคุณควรสร้างไฟล์เทมเพลตสำคัญต่อไปนี้ทีละขั้นตอนเพื่อสร้างโครงสร้างธีมที่สมบูรณ์:
- header.php: ส่วนหัวของเว็บไซต์ ประกอบด้วย <head> พื้นที่และการนำทางด้านบน
- footer.php: ส่วนท้ายของเว็บไซต์
- sidebar.php: แถบด้านข้าง
- functions.php: ไฟล์ฟังก์ชันของธีม ใช้สำหรับเพิ่มฟังก์ชัน ลงทะเบียนเมนู พื้นที่วิดเจ็ต ฯลฯ
- page.php: ใช้สำหรับเรนเดอร์หน้าเดี่ยว
- single.php: ใช้สำหรับเรนเดอร์บทความเดี่ยว
- archive.php: ใช้สำหรับการแสดงผลหน้าอาร์ไคฟ์ เช่น หมวดหมู่, แท็ก, ผู้เขียน

index.php ใน คุณสามารถใช้ get_header(), get_footer(), get_sidebar() เป็นต้น เพื่อนำเข้าส่วนที่เป็นโมดูลาร์เหล่านี้ เพื่อนำโค้ดกลับมาใช้ซ้ำ

แนะนำให้อ่าน คู่มือเจาะลึกการพัฒนา WordPress Theme: จากพื้นฐานสู่การเชี่ยวชาญด้วยเทคโนโลยีหลัก

ฟังก์ชันหลักและตัวเลือกธีม

functions.php ไฟล์ functions.php เป็น “สมอง” ของธีมคุณ ตรรกะเบื้องหลังและฟังก์ชันเสริมทั้งหมดจะดำเนินการที่นี่ มันจะโหลดโดยอัตโนมัติเมื่อเริ่มต้นธีม

เพิ่มการรองรับธีมและการลงทะเบียนฟังก์ชัน

ผ่าน add_theme_support() ฟังก์ชัน add_theme_support() ช่วยให้คุณประกาศฟังก์ชันต่างๆ ที่ธีมรองรับ ตัวอย่างเช่น การเปิดใช้งานรูปขนาดย่อของโพสต์ (รูปเด่น) เป็นมาตรฐานของธีมสมัยใหม่

function my_theme_setup() {
    // 添加文章和评论的 RSS feed 链接到 head
    add_theme_support( 'automatic-feed-links' );
    // 启用文章缩略图功能
    add_theme_support( 'post-thumbnails' );
    // 启用自定义菜单功能
    add_theme_support( 'menus' );
    // 让 WordPress 管理文档标题
    add_theme_support( 'title-tag' );
    // 启用对古腾堡编辑器的宽对齐和颜色支持
    add_theme_support( 'align-wide' );
    add_theme_support( 'editor-color-palette', array( /* ... */ ) );
}
add_action( 'after_setup_theme', 'my_theme_setup' );

คุณยังต้องลงทะเบียนตำแหน่งเมนูนำทางและพื้นที่วิดเจ็ต (แถบด้านข้าง)

hosting.com 共享主机
高性能,配备 AMD EPYC CPU、NVMe SSD 存储和 LiteSpeed,全天候24小时、全天候的专家内部支持,高级安全措施,包括 SSL、暴力破解、恶意软件和 DDoS 防护,节省高达 73%
function my_theme_menus() {
    register_nav_menus( array(
        'primary' =&gt; __( '主导航菜单', 'my-custom-theme' ),
        'footer'  =&gt; __( '底部菜单', 'my-custom-theme' ),
    ) );
}
add_action( 'init', 'my_theme_menus' );

function my_theme_widgets_init() {
    register_sidebar( array(
        'name'          =&gt; __( '主侧边栏', 'my-custom-theme' ),
        'id'            =&gt; 'sidebar-1',
        'description'   =&gt; __( '在此添加小工具。', 'my-custom-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' );

การนำเข้าไฟล์สไตล์ชีตและสคริปต์

วิธีที่ถูกต้องในการนำเข้าแหล่งข้อมูลคือผ่าน wp_enqueue_style()wp_enqueue_script() ฟังก์ชัน เพื่อติดตั้งพวกมันลงใน wp_enqueue_scripts บนฮุค

function my_theme_scripts() {
    // 引入主样式表
    wp_enqueue_style( 'my-theme-style', get_stylesheet_uri(), array(), wp_get_theme()->get('Version') );

// 引入自定义 JavaScript 文件
    wp_enqueue_script( 'my-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_theme_scripts' );

แท็กลูปและเทมเพลต

“ลูป” เป็นกลไกเริ่มต้นของ WordPress ที่ใช้ในการดึงข้อมูลเนื้อหาจากฐานข้อมูลและแสดงบนหน้าเว็บ การทำความเข้าใจและใช้ลูปอย่างถูกต้องเป็นพื้นฐานของการแสดงเนื้อหาแบบไดนามิก

โครงสร้างของลูปมาตรฐาน

ในไฟล์เทมเพลต คุณมักจะเห็นโครงสร้างโค้ดที่คล้ายกับด้านล่าง นี่คือลูปหลักของ WordPress

แนะนำให้อ่าน การพัฒนา WordPress Theme ตั้งแต่เริ่มต้นจนเชี่ยวชาญ: สร้างธีมแบบกำหนดเองตั้งแต่ศูนย์

<?php if ( have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <article id="post-<?php the_ID(); ?>" no numeric noise key 1008>
            <header class="entry-header">
                <h2 class="entry-title"><a href="/th/</?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            </header>
            <div class="entry-content">
                <?php the_content(); ?>
            </div>
        </article>
    
    <p><?php _e( '抱歉,没有找到任何内容。', 'my-custom-theme' ); ?></p>
<?php endif; ?>

have_posts()the_post() ฟังก์ชันควบคุมการทำงานของลูปthe_title(), the_content(), the_permalink() และแท็กเทมเพลตอื่นๆ ใช้สำหรับแสดงข้อมูลเฉพาะของโพสต์ปัจจุบัน นอกลูป คุณสามารถใช้ is_home(), is_single(), is_page() และแท็กเงื่อนไขอื่นๆ เพื่อตรวจสอบประเภทของหน้าปัจจุบัน และดำเนินการตรรกะที่แตกต่างกัน

การสืบค้นแบบกำหนดเองและการวนซ้ำ

บางครั้งคุณจำเป็นต้องแสดงเนื้อหาที่ไม่ใช่ลูปหลัก เช่น การแสดงบทความจากหมวดหมู่เฉพาะบนหน้าแรก ในกรณีนี้คุณสามารถใช้ WP_Query คลาสเพื่อสร้างการสืบค้นแบบกำหนดเอง

โฮสติ้งแบบแชร์ของ InterServer
共享主机每月 $2.50 USD , 首月 $0.1 USD 优惠码 tryinterserver, 461个云应用脚本,一键安装。
<?php
$custom_query = new WP_Query( array(
    'category_name' => 'featured',
    'posts_per_page' => 3,
) );
if ( $custom_query->have_posts() ) :
    while ( $custom_query->have_posts() ) : $custom_query->the_post();
        // 输出文章内容...
    endwhile;
    wp_reset_postdata(); // 重置全局 $post 数据
endif;
?>

สรุป

การพัฒนา WordPress Theme ตั้งแต่เริ่มต้นเป็นกระบวนการเชิงระบบที่ครอบคลุมตั้งแต่การตั้งค่าแวดล้อม การวางโครงสร้าง การใช้งานฟังก์ชัน ไปจนถึงการแสดงเนื้อหาแบบไดนามิกทั้งหมด ใจกลางสำคัญอยู่ที่การเข้าใจกลไกลำดับชั้นของเทมเพลต ซึ่งกำหนดตรรกะการแสดงผลหน้าเว็บ และการใช้งานอย่างเชี่ยวชาญ functions.php เพื่อขยายความสามารถของธีม และเชี่ยวชาญ “ลูป” ซึ่งเป็นพื้นฐานสำคัญสำหรับการแสดงผลข้อมูล การปฏิบัติตามมาตรฐานการเข้ารหัสและแนวทางปฏิบัติที่ดีที่สุดของ WordPress เช่น การนำเข้าแหล่งข้อมูลอย่างถูกต้อง การใช้ฟังก์ชันแปลภาษา การเพิ่มการสนับสนุนธีมที่เพียงพอ จะช่วยให้ธีมของคุณมีความแข็งแกร่ง มีประสิทธิภาพ และบำรุงรักษาได้ง่าย ผ่านการปฏิบัติตามขั้นตอนในคู่มือนี้ คุณจะสามารถสร้างธีมที่กำหนดเองที่มีโครงสร้างชัดเจนและความสามารถครบถ้วน เพื่อเป็นพื้นฐานที่มั่นคงสำหรับการพัฒนาในระดับที่สูงขึ้น

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

การพัฒนา WordPress Theme ต้องเชี่ยวชาญเทคโนโลยีหลักใดบ้าง

คุณจำเป็นต้องมีความรู้พื้นฐานเกี่ยวกับ PHP (สำหรับตรรกะแบ็กเอนด์และเทมเพลต) HTML/CSS (สำหรับโครงสร้างและสไตล์) และ JavaScript (สำหรับการโต้ตอบ) ที่สำคัญที่สุดคือการเข้าใจแนวคิดหลักของ WordPress เช่น ลำดับชั้นของเทมเพลต ฮุค (Hooks) แอ็กชันและฟิลเตอร์ (Actions & Filters) ลูป (The Loop) รวมถึงฟังก์ชันและคลาสต่าง ๆ ที่ WordPress จัดเตรียมไว้

จะทำให้ธีมของฉันรองรับตัวแก้ไข Gutenberg ได้อย่างไร

ก่อนอื่นใน functions.php ใช้ฟังก์ชัน add_theme_support() เปิดใช้งานฟีเจอร์ที่เกี่ยวข้อง เช่น editor-stylesalign-wide และแผงสีที่กำหนดเอง ประการที่สอง ให้สร้างสไตล์ชีตเฉพาะสำหรับตัวแก้ไข และนำเข้าโดยใช้ add_editor_style() ฟังก์ชัน เพื่อให้แน่ใจว่าประสบการณ์การมองเห็นของตัวแก้ไขแบ็กเอนด์สอดคล้องกับส่วนหน้า คุณยังสามารถสร้างสไตล์บล็อก (Block Styles) หรือบล็อกที่กำหนดเอง (Custom Blocks) เพื่อให้มีฟังก์ชันการแก้ไขที่หลากหลายยิ่งขึ้น

ในระหว่างการพัฒนาธีม จะรองรับหลายภาษาได้อย่างไร?

WordPress ใช้เฟรมเวิร์ก GNU gettext สำหรับการทำให้เป็นสากล (i18n) ในโค้ด ข้อความทั้งหมดที่ต้องการแปลควรถูกห่อหุ้มด้วยฟังก์ชันเฉพาะ เช่น () ใช้สำหรับแปลใน PHP_e() ใช้สำหรับแปลและแสดงผลทันทีesc_html() ใช้สำหรับแปลและหลีกเลี่ยง HTML ใน JavaScript ให้ใช้ wp.i18n.__()จากนั้นใช้เครื่องมือเช่น Poedit เพื่อดึงข้อความเหล่านี้สร้างไฟล์ .pot และแปลเป็นไฟล์ .po และ .mo สุดท้ายใน style.css การตั้งค่าส่วนหัวให้ถูกต้อง Text Domain และ functions.php ใช้ฟังก์ชัน load_theme_textdomain() โหลดไฟล์การแปล

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

สำหรับตัวเลือกที่เรียบง่าย คุณสามารถใช้ WordPress Customizer API ที่มีอยู่แล้ว ซึ่งมีอินเทอร์เฟซการแสดงตัวอย่างแบบเรียลไทม์ที่ใช้งานง่าย สำหรับความต้องการที่ซับซ้อนมากขึ้น คุณสามารถสร้างอินเทอร์เฟซการตั้งค่าที่อิงตามหน้า Options Page ขอแนะนำให้ใช้ WordPress Settings API เพื่อลงทะเบียน ตรวจสอบ และบันทึกการตั้งค่าอย่างปลอดภัย คุณยังสามารถใช้ไลบรารีของบุคคลที่สาม เช่น Advanced Custom Fields (ACF) หรือ Carbon Fields ซึ่งสามารถลดความซับซ้อนในการสร้างฟิลด์ที่กำหนดเองและหน้า options ได้อย่างมาก