คู่มือเริ่มต้นการพัฒนา WordPress Theme: สร้างธีมเว็บไซต์แรกของคุณตั้งแต่ศูนย์

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

พื้นฐานการพัฒนา WordPress Theme และการตั้งค่าแวดล้อม

ก่อนเริ่มเขียนโค้ด คุณต้องเข้าใจองค์ประกอบพื้นฐานของธีม WordPress ธีมโดยพื้นฐานแล้วคือโฟลเดอร์ที่ประกอบด้วยไฟล์ต่าง ๆ เช่น PHP, CSS, JavaScript และรูปภาพ ซึ่งร่วมกันกำหนดรูปลักษณ์และฟังก์ชันบางส่วนของเว็บไซต์ โฟลเดอร์นี้ต้องอยู่ในไดเรกทอรีwp-content/themesภายใต้การติดตั้ง WordPress แต่ละธีมต้องการไฟล์สไตล์หลักstyle.cssและไฟล์เทมเพลตพื้นฐานindex.phpซึ่งเป็นข้อกำหนดขั้นต่ำในการเริ่มต้นโครงการพัฒนาธีมใด ๆ

เพื่อการพัฒนาอย่างมีประสิทธิภาพ ขอแนะนำให้สร้างสภาพแวดล้อมการพัฒนาท้องถิ่น สิ่งนี้จะช่วยให้คุณสามารถทดสอบได้อย่างอิสระโดยไม่ส่งผลกระทบต่อเว็บไซต์ออนไลน์ คุณสามารถใช้ชุดเครื่องมือแบบครบวงจร เช่น XAMPP, MAMP, Local by Flywheel หรือ DevKinsta ซึ่งสามารถติดตั้ง Apache/Nginx, PHP และ MySQL ได้ในคลิกเดียว ในสภาพแวดล้อมท้องถิ่น คุณยังต้องการโปรแกรมแก้ไขโค้ด เช่น VS Code, PhpStorm หรือ Sublime Text ซึ่งคุณลักษณะการเน้นไวยากรณ์และคำแนะนำสำหรับ PHP, HTML และ CSS จะช่วยเพิ่มประสิทธิภาพการเข้ารหัสของคุณอย่างมาก

หลังจากเตรียมการเสร็จสิ้น คุณจะต้องwp-content/themesสร้างโฟลเดอร์ใหม่ในไดเรกทอรี เช่นmy-first-themeต่อไป เราจะสร้างไฟล์ที่จำเป็นไฟล์แรก

แนะนำให้อ่าน เริ่มต้นจากศูนย์สู่การเชี่ยวชาญการพัฒนา WordPress Theme: แนวปฏิบัติและคู่มือที่ดีที่สุดในการสร้างเว็บไซต์ที่กำหนดเอง

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

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

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

นี่คือstyle.cssตัวอย่างมาตรฐานของส่วนหัวของไฟล์:

/*
Theme Name: 我的第一个主题
Theme URI: http://example.com/my-first-theme/
Author: 你的名字
Author URI: http://example.com/
Description: 一个用于学习WordPress主题开发的简洁入门主题。
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: 博客, 简洁, 响应式
Text Domain: my-first-theme
*/

หลังจากส่วนหัวของไฟล์แล้ว คุณสามารถเริ่มเพิ่มกฎสไตล์ให้กับองค์ประกอบเว็บไซต์ของคุณได้เหมือนกับการเขียน CSS ทั่วไป โดเมนข้อความ (Text Domain)my-first-themeเป็นตัวระบุที่สงวนไว้สำหรับการทำให้ธีมเป็นสากล (การแปล) ควรคงไว้ให้สอดคล้องกับชื่อโฟลเดอร์ของธีม

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

ไฟล์เทมเพลตเป็นโครงกระดูกของ WordPress Theme ซึ่งกำหนดวิธีการจัดระเบียบและนำเสนอเนื้อหาประเภทต่างๆ ไฟล์เหล่านี้ประกอบด้วยโค้ด PHP เป็นหลัก และผสมผสานกับแท็ก HTML ไฟล์เทมเพลตพื้นฐานที่สุดคือindex.phpซึ่งเป็นเทมเพลตสำรองสำหรับทุกหน้า เมื่อไม่มีเทมเพลตที่เฉพาะเจาะจงกว่า (เช่นsingle.phppage.php)

สร้างไฟล์ดัชนีพื้นฐาน

สร้างในโฟลเดอร์ธีมindex.phpอย่างง่ายที่สุดแต่ครบถ้วนindex.phpสามารถรวม WordPress Loop (เดอะลูป) ซึ่งเป็นกลไกหลักสำหรับการดึงและแสดงเนื้อหาบทความจากฐานข้อมูล

แนะนำให้อ่าน การพัฒนาเทมเพลต WordPress จากเริ่มต้นจนเชี่ยวชาญ: สอนคุณทีละขั้นตอนในการสร้างเว็บไซต์ที่กำหนดเอง

อย่างย่อที่สุดindex.phpมีดังนี้:

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

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

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

ไฟล์นี้ประกอบด้วยส่วนสำคัญหลายส่วน:wp_head()wp_footer()ฮุก ซึ่งช่วยให้ WordPress Core, ปลั๊กอิน และสคริปต์อื่นๆ แทรกโค้ดที่จำเป็น (เช่น CSS, JS) ก่อนหน้าและสิ้นสุดหน้าthe_post()ฟังก์ชันที่ใช้ในลูปเพื่อตั้งค่าข้อมูลโพสต์ปัจจุบัน จากนั้นแท็กเทมเพลต เช่นthe_title()the_content()ก็จะสามารถแสดงเนื้อหาที่เกี่ยวข้องได้

การนำเข้า Stylesheet และสคริปต์

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

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

ขยายฟังก์ชันของธีมและการโหลดสไตล์

functions.phpไฟล์คือห้องเครื่องของธีม รหัส PHP ทั้งหมดที่ไม่เกี่ยวข้องโดยตรงกับการแสดงผลหน้าควรถูกวางไว้ที่นี่ ในไฟล์นี้ คุณควรใช้add_action()ฟังก์ชันเพื่อเชื่อมรหัสของคุณเข้ากับฮุคการกระทำเฉพาะของ WordPress เพื่อให้มั่นใจว่าพวกมันทำงานในเวลาที่เหมาะสม

การโหลดสไตล์ชีตอย่างปลอดภัย

วิธีที่ถูกต้องไม่ใช่การนำเข้าโดยตรงในไฟล์เทมเพลตด้วยแท็กstyle.cssแต่เป็นการโหลดผ่านwp_enqueue_style()ฟังก์ชันเพื่อจัดคิวการโหลด ซึ่งเป็นไปตามกลไกการจัดการการพึ่งพาของ WordPress และสามารถหลีกเลี่ยงการโหลดซ้ำได้

functions.phpเพิ่มโค้ดต่อไปนี้ใน:

แนะนำให้อ่าน คู่มือยอดนิยมสำหรับผู้เริ่มต้นในปี 2026: วิธีสร้างธีม WordPress แรกของคุณตั้งแต่เริ่มต้น

<?php
function my_first_theme_scripts() {
    // 加载主样式表
    wp_enqueue_style( 'my-first-theme-style', get_stylesheet_uri() );
    // 可以在此加载其他样式或脚本,例如:
    // wp_enqueue_script( 'my-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'my_first_theme_scripts' );

ที่นี่get_stylesheet_uri()ฟังก์ชันจะดึงข้อมูลของธีมโดยอัตโนมัติstyle.cssเส้นทางไฟล์add_action( 'wp_enqueue_scripts', ... )เพื่อให้แน่ใจว่าฟังก์ชันการโหลดของเราจะถูกเรียกเมื่อ WordPress เตรียมสคริปต์และสไตล์สำหรับส่วนหน้า

เปิดใช้งานฟังก์ชันธีมพื้นฐาน

functions.phpในนั้น เรายังสามารถเปิดใช้งานฟังก์ชันที่สำคัญต่อเว็บไซต์สมัยใหม่ได้ ตัวอย่างเช่น เปิดใช้งานการรองรับภาพเด่น (รูปขนาดย่อของบทความ) สำหรับบทความและหน้า และเพิ่มตำแหน่งเมนูที่กำหนดเองให้กับเว็บไซต์

โฮสติ้งแบบแชร์ของ InterServer
共享主机每月 $2.50 USD , 首月 $0.1 USD 优惠码 tryinterserver, 461个云应用脚本,一键安装。
// 启用文章特色图像
add_theme_support( 'post-thumbnails' );

// 注册一个导航菜单位置
register_nav_menus( array(
    'primary' => __( '主导航菜单', 'my-first-theme' ),
) );

// 为WordPress生成的标签添加title属性支持
add_theme_support( 'title-tag' );

add_theme_support()ฟังก์ชันใช้สำหรับประกาศฟังก์ชันต่าง ๆ ที่ธีมรองรับ และregister_nav_menus()กำหนดตำแหน่งเมนูที่สามารถกำหนดเมนูใน WordPress backend “รูปลักษณ์” -> “เมนู” ได้

สร้างเทมเพลตเฉพาะและทดสอบธีม

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

สร้างเทมเพลตหน้าโพสต์เดียว

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

<?php get_header(); ?>

<main>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
        <article id="post-<?php the_ID(); ?>" no numeric noise key 1013>
            <h1><?php the_title(); ?></h1>
            <div class="meta">
                发布于: | 作者:
            </div>
            <?php if ( has_post_thumbnail() ) : ?>
                <div class="featured-image">
                    <?php the_post_thumbnail(); ?>
                </div>
            <?php endif; ?>
            <div class="content">
                <?php the_content(); ?>
            </div>
            <div class="taxonomies">
                分类:
                <br>
                标签:
            </div>
        </article>
        
</main>

เทมเพลตนี้แนะนำฟังก์ชันเทมเพลตใหม่:get_header(), get_sidebar()get_footer()ซึ่งจะโหลดไฟล์ส่วนประกอบเทมเพลตที่ชื่อว่าheader.phpsidebar.phpfooter.phpตามลำดับ วิธีการนี้ทำให้โครงสร้างหน้าเว็บเป็นโมดูล ช่วยหลีกเลี่ยงการเขียนโค้ดซ้ำซ้อน คุณต้องสร้างไฟล์เหล่านี้และย้ายเนื้อหาเข้าไปในไฟล์เหล่านั้นindex.phpโค้ดส่วนหัว, ส่วนท้าย และแถบด้านข้างที่เกี่ยวข้องในภาษาไทย

ทดสอบและตรวจสอบธีมของคุณ

หลังจากสร้างเทมเพลตหลักเสร็จแล้ว ให้เข้าสู่ระบบแดชบอร์ด WordPress ของคุณ ไปที่ “รูปลักษณ์” -> “ธีม” คุณควรเห็น “ธีมแรกของฉัน” ปรากฏในรายการธีม เปิดใช้งานมัน จากนั้นเข้าไปที่หน้าแรกของเว็บไซต์และหน้าโพสต์เดี่ยว ตรวจสอบว่าทุกองค์ประกอบ (หัวข้อ, เนื้อหา, เมนู, ส่วนท้าย) แสดงตามที่คาดหวังหรือไม่

ใช้เครื่องมือนักพัฒนาของเบราว์เซอร์เพื่อตรวจสอบว่าโครงสร้าง HTML ถูกต้องหรือไม่ และ CSS ทำงานหรือไม่ ลองสร้างบทความทดสอบสองสามบทความ ซึ่งรวมถึงรูปภาพเด่น, หมวดหมู่ และแท็ก เพื่อให้แน่ใจว่าสามารถเรียกใช้และแสดงผลในเทมเพลตได้อย่างถูกต้อง นี่เป็นวิธีที่ดีที่สุดในการค้นหาและแก้ไขปัญหาที่อาจเกิดขึ้น

สรุป

ยินดีด้วยที่คุณสร้างพื้นฐานของ WordPress Theme แรกสำเร็จ ผ่านคู่มือนี้ คุณได้เรียนรู้กระบวนการทั้งหมดตั้งแต่เริ่มต้นสร้างโฟลเดอร์ธีม เขียนไฟล์ที่จำเป็นstyle.cssindex.phpใช้functions.phpเพื่อเพิ่มประสิทธิภาพ โหลดทรัพยากร ไปจนถึงการสร้างไฟล์เทมเพลตเฉพาะทางและการพัฒนาแบบโมดูลาร์ นี่เป็นเพียงจุดเริ่มต้นของโลกการพัฒนาเทมเพลต ต่อไปคุณสามารถสำรวจเทมเพลตไฟล์เพิ่มเติม (เช่นpage.phparchive.php), พื้นที่วิดเจ็ต, ประเภทโพสต์ที่กำหนดเอง และหัวข้อขั้นสูงอื่นๆ พร้อมทั้งปรับปรุงโครงสร้างโค้ดและการออกแบบของคุณอย่างต่อเนื่อง

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

### ทำไมธีมของฉันไม่แสดงในแอดมิน?
โดยปกติแล้วนี่เกิดจากstyle.cssเกิดจากรูปแบบหัวข้อหรือข้อมูลหัวข้อในไฟล์ไม่ถูกต้องหรือขาดหายไป โปรดตรวจสอบให้แน่ใจว่าไฟล์อยู่ในโฟลเดอร์รากของธีม และข้อมูลหัวข้อสมบูรณ์และมีรูปแบบที่ถูกต้อง สาเหตุที่เป็นไปได้อีกประการหนึ่งคือปัญหาเกี่ยวกับสิทธิ์ของไฟล์ ตรวจสอบให้แน่ใจว่า WordPress มีสิทธิ์ในการอ่านโฟลเดอร์ธีมของคุณ

ไฟล์ functions.php จำเป็นหรือไม่?

ในทางเทคนิคแล้ว มีเพียงstyle.cssindex.phpธีมก็สามารถทำงานได้ แต่functions.phpสำหรับการใช้งานใดๆ ที่เกินกว่าการแสดงผล HTML พื้นฐาน (เช่น เมนูการลงทะเบียน การเพิ่มแถบด้านข้าง การโหลดสคริปต์และสไตล์อย่างปลอดภัย) เป็นสิ่งจำเป็น มันเป็นวิธีมาตรฐานในการขยายและปรับแต่งฟังก์ชันการทำงานของธีม ดังนั้นจึงจำเป็นสำหรับธีมที่ใช้งานได้จริงใดๆ

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

ก่อนอื่นในfunctions.phpใช้ฟังก์ชันregister_sidebar()ฟังก์ชันลงทะเบียนพื้นที่วิดเจ็ตหนึ่งหรือหลายพื้นที่ (แถบด้านข้าง) จากนั้น ในไฟล์เทมเพลตที่คุณต้องการแสดงแถบด้านข้าง (เช่นindex.phpsingle.php) ใช้dynamic_sidebar()ฟังก์ชันเพื่อเรียกใช้มัน สุดท้าย ผู้ใช้สามารถลากและวางวิดเจ็ตเข้าพื้นที่นี้ได้ในหน้า “รูปลักษณ์” -> “วิดเจ็ต” ในแอดมิน WordPress

การพัฒนาธีมมีข้อควรระวังด้านความปลอดภัยอะไรบ้าง?

อย่าเชื่อถือข้อมูลที่ผู้ใช้ป้อนหรือข้อมูลจากฐานข้อมูลโดยตรง เมื่อส่งออกเนื้อหาแบบไดนามิกใด ๆ ไปยังหน้าเว็บ ต้องใช้ฟังก์ชันการหนีที่ WordPress จัดให้ เช่นesc_html()esc_url()wp_kses_post()เมื่อแนะนำฟังก์ชันหรือฟอร์มที่กำหนดเองในธีม ต้องปฏิบัติตามกลไกการตรวจสอบ nonce และสิทธิ์ของ WordPress ใช้wp_enqueue_style()wp_enqueue_script()เพื่อโหลดทรัพยากร แทนที่จะใช้การเข้ารหัสแบบแข็งหรือแท็ก