คู่มือเริ่มต้นการพัฒนา WordPress Theme แบบลงมือปฏิบัติ: สร้างโครงสร้างธีมแบบกำหนดเองและเทมเพลตตั้งแต่เริ่มต้น

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

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

พื้นฐานและการเตรียมสภาพแวดล้อมสำหรับการพัฒนา Theme

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

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

เราขอแนะนำให้ใช้สภาพแวดล้อมการพัฒนาท้องถิ่น เช่น Local, XAMPP หรือ MAMP เครื่องมือเหล่านี้สามารถติดตั้ง PHP, MySQL และ Apache/Nginx ได้ในคลิกเดียว ในสภาพแวดล้อม ให้สร้างการติดตั้ง WordPress ใหม่เป็นพื้นที่ทดสอบสำหรับธีมของคุณ

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

ทำความเข้าใจโครงสร้างไดเรกทอรีมาตรฐานของธีม

ธีมที่ง่ายที่สุดและ WordPress สามารถรับรู้ได้ ต้องการเพียงสองไฟล์:style.cssindex.phpอย่างไรก็ตาม ไดเรกทอรีธีมที่กำหนดเองที่มีโครงสร้างดีควรจัดระเบียบไฟล์ประเภทต่าง ๆ อย่างเหมาะสม โครงสร้างไดเรกทอรีธีมทั่วไปมีดังต่อไปนี้:

UltaHost WordPress โฮสติ้ง
การรับประกันคืนเงินภายใน 30 วัน, แบนด์วิธและฐานข้อมูลไม่จำกัด, การป้องกัน DDoS ฟรี, ซื้อ 3 ปีลดราคา 50%
your-theme/
├── style.css          (必需,主题样式表和信息头)
├── index.php          (必需,主模板文件)
├── functions.php      (主题功能增强文件)
├── header.php         (头部模板)
├── footer.php         (底部模板)
├── sidebar.php        (侧边栏模板)
└── assets/            (静态资源目录)
    ├── css/
    ├── js/
    └── images/

สร้างไฟล์สไตล์ชีตหลัก

style.css ไฟล์ไม่เพียงแต่เป็นไฟล์สไตล์ แต่ยังเป็น “บัตรประจำตัว” ของธีมด้วย บล็อกความคิดเห็นที่ด้านบนของไฟล์ประกอบด้วยข้อมูลเมตาทั้งหมดที่ WordPress ต้องการเพื่อระบุธีม

/*
Theme Name: 我的自定义主题
Theme URI: https://example.com/my-custom-theme
Author: 你的名字
Author URI: https://example.com
Description: 一个从零开始开发的自定义WordPress主题。
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-custom-theme
*/

โดยเฉพาะอย่างยิ่งText Domain ใช้สำหรับการทำให้เป็นสากล และเป็นตัวระบุที่จำเป็นต้องใช้เมื่อเรียกใช้ฟังก์ชันการแปลในภายหลัง

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

WordPress ใช้ระบบลำดับชั้นของเทมเพลตเพื่อตัดสินใจว่าไฟล์เทมเพลตใดจะใช้สำหรับประเภทหน้าต่างๆ การสร้างไฟล์เหล่านี้เป็นงานหลักในการพัฒนาเทม

สร้างไฟล์เทมเพลตพื้นฐาน

ขั้นแรก สร้างเทมเพลตส่วนหัวและส่วนท้ายที่แยกออกจากกัน ไฟล์ header.php ควรประกอบด้วยส่วนหัวของเอกสาร HTML,พื้นที่ และส่วนเริ่มต้นของเนื้อหาหน้าเว็บ โดยทั่วไปจะใช้ wp_head() ฟังก์ชันเพื่อให้ปลั๊กอินและฟังก์ชันหลักสามารถฉีดโค้ดได้

แนะนำให้อ่าน WordPress Theme Development จากเริ่มต้นสู่ขั้นสูง: คู่มือแบบครบวงจรสำหรับการสร้างเว็บไซต์ที่กำหนดเอง

<!DOCTYPE html>
<html no numeric noise key 1006>
<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 1003>
<?php wp_body_open(); ?>
<header>
    <h1><a href="/th/</?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
</header>

ไฟล์ footer.php ประกอบด้วยเนื้อหาส่วนท้าย และจบด้วย wp_footer() ฟังก์ชันสิ้นสุด

<footer>
    <p>©</p>
</footer>
<?php wp_footer(); ?>
</body>
</html>

นำไฟล์แม่แบบหลักไปใช้

index.php ในฐานะไฟล์สำรองสุดท้ายของแม่แบบ หน้าที่พื้นฐานของมันคือการนำเข้าเฮดเดอร์และฟุตเตอร์ และสร้างลูปหลักเพื่อแสดงรายการบทความ

<?php get_header(); ?>

<main>
    
            <article>
                <h2><a href="/th/</?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                <div><?php the_excerpt(); ?></div>
            </article>
        
        <p>ยังไม่มีบทความ</p>
    <?php endif; ?>
</main>

พัฒนาแม่แบบหน้าเฉพาะทาง

ตามระดับชั้นของเทมเพลต คุณสามารถสร้างเทมเพลตที่เจาะจงสำหรับหน้าเว็บบางหน้าได้ เช่น สร้าง single.php สำหรับแสดงบทความเดี่ยวpage.php สำหรับแสดงหน้าเดี่ยวarchive.php สำหรับแสดงการจัดเก็บหมวดหมู่ WordPress จะเรียกใช้เทมเพลตที่เจาะจงเหล่านี้โดยอัตโนมัติตามลำดับความสำคัญ

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

เพิ่มฟังก์ชันของธีมผ่านไฟล์ฟังก์ชัน

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

เพิ่มการสนับสนุนพื้นฐานของธีม

functions.php ใน, ใช้ add_theme_support() ฟังก์ชันเพื่อประกาศฟีเจอร์ที่ธีมรองรับ นี่คือจุดเริ่มต้นมาตรฐาน

function my_custom_theme_setup() {
    // 让WordPress管理文档标题
    add_theme_support( 'title-tag' );
    // 启用文章和页面的特色图像功能
    add_theme_support( 'post-thumbnails' );
    // 注册导航菜单位置
    register_nav_menus( array(
        'primary' => __( '主导航菜单', 'my-custom-theme' ),
    ) );
    // 支持HTML5标记
    add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form', 'gallery', 'caption', 'style', 'script' ) );
}
add_action( 'after_setup_theme', 'my_custom_theme_setup' );

ลงทะเบียนพื้นที่วิดเจ็ตแถบด้านข้าง

ใช้ register_sidebar() ฟังก์ชันเพื่อกำหนดพื้นที่วิดเจ็ต ซึ่งอนุญาตให้ผู้ใช้เพิ่มเนื้อหาแบบไดนามิกในแอดมิน

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

function my_custom_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_custom_theme_widgets_init' );

การนำสคริปต์และสไตล์ชีตเข้ามาอย่างปลอดภัย

ห้ามลิงก์ไฟล์ CSS และ JS โดยตรงในเทมเพลต ควรใช้ wp_enqueue_style()wp_enqueue_script() ฟังก์ชัน และติดตั้ง (mount) ลงใน wp_enqueue_scripts บนฮุค

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-script', get_template_directory_uri() . '/assets/js/main.js', array(), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'my_custom_theme_scripts' );

การใช้งานแท็กเทมเพลตและลูป

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

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

การทำความเข้าใจและใช้งานลูปหลัก

ลูปหลักเป็นแนวคิดหลักที่สุดในเทมเพลตของ WordPress โดยใช้ตัวแปรโกลบอล $wp_query เพื่อวนซ้ำบทความที่ต้องแสดงในหน้าปัจจุบัน โครงสร้างพื้นฐานมีดังนี้:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <!-- 在这里使用模板标签 -->
<?php endwhile; else : ?>
    <!-- 没有找到文章时的内容 -->
<?php endif; ?>

หลังจากเรียกใช้ the_post() แล้ว “ข้อมูลบทความ” โกลบอลจะถูกตั้งค่า จากนั้นสามารถใช้แท็กเทมเพลตต่างๆ ได้

ใช้แท็กเทมเพลตทั่วไปเพื่อแสดงผลเนื้อหา

ภายในลูป คุณสามารถเรียกใช้ฟังก์ชันต่างๆ เพื่อแสดงข้อมูลบทความ ตัวอย่างเช่น:
- the_title(): เอาท์พุตหัวข้อบทความ
- the_permalink():แสดงลิงก์ถาวรของบทความ
- the_content(): แสดงเนื้อหาบทความทั้งหมด
- the_excerpt(): แสดงบทสรุปของบทความ
- the_post_thumbnail(): แสดงรูปภาพเด่นของบทความ
- the_date()the_author(): แสดงวันที่และผู้เขียน

นำทางการแบ่งหน้าบทความ

หลังจากสิ้นสุดการวนซ้ำของรายการบทความ (เช่น หน้าแรก, หน้าจัดเก็บ) จำเป็นต้องให้การนำทางการแบ่งหน้า สามารถใช้ the_posts_pagination() ฟังก์ชันเพื่อแสดงรายการลิงก์แบ่งหน้าที่สวยงามและเข้าถึงได้

the_posts_pagination( array(
    'mid_size'  => 2,
    'prev_text' => __( '上一页', 'my-custom-theme' ),
    'next_text' => __( '下一页', 'my-custom-theme' ),
) );

สรุป

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

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

การพัฒนา WordPress Theme จำเป็นต้องเชี่ยวชาญ PHP หรือไม่?

ใช่ PHP เป็นสิ่งที่ต้องเชี่ยวชาญ WordPress Core เองเขียนด้วย PHP ไฟล์เทมเพลตทั้งหมด ตรรกะการทำงาน และการโต้ตอบกับฐานข้อมูลล้วนพึ่งพา PHP HTML, CSS และ JavaScript ใช้สำหรับการสร้างการแสดงผลและปฏิสัมพันธ์ส่วนหน้า แต่ PHP เป็นพื้นฐานสำหรับการฉีดข้อมูลไดนามิกไปยังส่วนหน้า

ทำไมธีมของฉันถึงไม่แสดงในหน้าบริหารหรือไม่สามารถเปิดใช้งานได้?

สาเหตุที่พบบ่อยที่สุดคือ style.css ข้อมูลส่วนหัวของธีมที่ด้านบนของไฟล์ไม่ถูกต้อง ขาดข้อมูลที่จำเป็น หรือการเข้ารหัสไฟล์มีปัญหา โปรดกรอกข้อมูลส่วนหัวตามมาตรฐานอย่างเคร่งครัด และตรวจสอบให้แน่ใจว่าไฟล์เข้ารหัสเป็น UTF-8 without BOM ประการที่สอง ตรวจสอบว่าโฟลเดอร์ธีมถูกวางไว้ใน/wp-content/themes/ไดเรกทอรีอย่างถูกต้องหรือไม่

ไฟล์ functions.php กับปลั๊กอินแตกต่างกันอย่างไร

functions.php ฟังก์ชันในไฟล์ผูกติดกับธีมปัจจุบันอย่างลึกซึ้ง เมื่อเปลี่ยนธีม ฟังก์ชันเหล่านี้จะไม่ทำงาน มันเหมาะสำหรับการเพิ่มฟังก์ชันที่เกี่ยวข้องอย่างใกล้ชิดกับรูปลักษณ์และเค้าโครงของธีม (เช่น การลงทะเบียนเมนู การกำหนดพื้นที่วิดเจ็ต การเพิ่มตัวเลือกการสนับสนุนธีม) ในขณะที่ฟังก์ชันที่ปลั๊กอินมอบมักจะแยกจากธีม และยังคงใช้งานได้หลังจากเปลี่ยนธีม เหมาะสำหรับการเพิ่มฟังก์ชันทั่วไป (เช่น แบบฟอร์มติดต่อ การปรับแต่ง SEO การแคช)

ฉันจะทำให้ธีมของฉันรองรับหลายภาษา (สากล) ได้อย่างไร

คุณต้องใช้ฟังก์ชันสากลของ WordPress เพื่อห่อหุ้มข้อความที่เผยแพร่ต่อผู้ใช้ทั้งหมด ในโค้ด ใช้ ()_e() และฟังก์ชันอื่น ๆ และระบุใน style.css ที่กำหนดไว้ใน Text Domainตัวอย่างเช่น:echo ( ‘阅读更多’, ‘my-custom-theme’ );จากนั้นใช้เครื่องมือเช่น Poedit เพื่อสร้าง.potไฟล์เทมเพลตการแปล สำหรับนักแปลในการสร้าง.po.moไฟล์ภาษา

ควรแก้ไขไฟล์เทมเพลตหลักโดยตรงระหว่างการพัฒนาหรือไม่?

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