การเตรียมตัวและการกำหนดค่าสภาพแวดล้อม
ก่อนเริ่มเขียนโค้ด คุณต้องมีสภาพแวดล้อมการพัฒนาที่เหมาะสม สภาพแวดล้อมการพัฒนาท้องถิ่นช่วยให้คุณทดสอบและดีบั๊กได้โดยไม่กระทบกับเว็บไซต์ออนไลน์ แนะนำให้ใช้ชุดซอฟต์แวร์แบบรวม เช่น XAMPP, MAMP หรือ Local by Flywheel ซึ่งสามารถติดตั้ง Apache, MySQL/MariaDB และ PHP ได้ในคลิกเดียว
ตรวจสอบให้แน่ใจว่าเวอร์ชัน PHP ของคุณอยู่ที่ 7.4 ขึ้นไป ซึ่งเป็นเวอร์ชันต่ำสุดที่ WordPress แนะนำอย่างเป็นทางการ นอกจากนี้คุณต้องมีโปรแกรมแก้ไขโค้ด เช่น Visual Studio Code, Sublime Text หรือ PHPStorm ซึ่งให้คุณสมบัติการเน้นไวยากรณ์และคำแนะนำโค้ด ช่วยเพิ่มประสิทธิภาพการพัฒนาได้อย่างมาก
สร้างโครงสร้างพื้นฐานของธีม WordPress
ธีม WordPress โดยพื้นฐานแล้วคือโฟลเดอร์ที่อยู่ใน wp-content/themes/ โฟลเดอร์ในไดเรกทอรี ชื่อโฟลเดอร์นี้คือตัวระบุธีมของคุณ แนะนำให้ใช้ตัวอักษรพิมพ์เล็ก ตัวเลข และยัติภังค์ และไม่ควรมีช่องว่าง ตัวอย่างเช่น คุณสามารถสร้างธีมชื่อ my-first-theme โฟลเดอร์
ในโฟลเดอร์นี้ จำเป็นต้องมีไฟล์หลักอย่างน้อยสองไฟล์:style.css 和 index.php。style.css ไม่ใช่เพียงสไตล์ชีตเท่านั้น แต่ยังมีบทบาทสำคัญในการให้ข้อมูลเมตาของธีม ซึ่งจะแสดงในหน้า “รูปลักษณ์” -> “ธีม” ในแอดมินของ WordPress
เขียนส่วนหัวข้อมูลธีม
在 style.css ที่ด้านบนของไฟล์ คุณต้องเพิ่มบล็อกความคิดเห็นเฉพาะเพื่อกำหนดข้อมูลธีม นี่คือตัวอย่าง:
/*
Theme Name: My First Theme
Theme URI: https://example.com/my-first-theme/
Author: Your Name
Author URI: https://example.com/
Description: 一个简洁、轻量级的入门级 WordPress 主题,用于学习主题开发。
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-first-theme
*/ โดยเฉพาะอย่างยิ่งText Domain สำหรับความเป็นสากล (การสนับสนุนหลายภาษา) ต้องตรงกับชื่อโฟลเดอร์ธีมของคุณindex.php ไฟล์คือไฟล์เทมเพลตเริ่มต้นของธีม ซึ่งเป็นเทมเพลตสำรองสำหรับทุกหน้า ในตอนแรก คุณสามารถเขียนโครงสร้าง HTML ง่ายๆ เพื่อทดสอบได้
ไฟล์เทมเพลตหลักและลำดับชั้นของเทมเพลต
WordPress ใช้กฎชุดหนึ่งที่เรียกว่า “ลำดับชั้นของเทมเพลต” ในการตัดสินใจว่าไฟล์เทมเพลตใดควรถูกนำมาใช้ในการแสดงผลสำหรับคำขอหน้าเว็บเฉพาะเจาะจง การทำความเข้าใจโครงสร้างนี้เป็นสิ่งสำคัญในการพัฒนาเทมเพลต แนวคิดหลักคือ: WordPress จะเริ่มค้นหาจากไฟล์เทมเพลตที่เฉพาะเจาะจงที่สุดก่อน หากไม่พบ ก็จะย้อนกลับไปใช้ไฟล์ที่ทั่วไปมากขึ้น และในที่สุดก็จะย้อนกลับไปใช้ index.php。
แนะนำให้อ่าน WordPress Theme Development สำหรับผู้เริ่มต้น: สร้างธีมที่กำหนดเองชิ้นแรกของคุณตั้งแต่เริ่มต้น。
ไฟล์เทมเพลตทั่วไปและการใช้งาน
header.php: ส่วนหัวของเว็บไซต์ โดยทั่วไปจะรวมพื้นที่ ``, โลโก้เว็บไซต์ และเมนูนำหลักfooter.php: ส่วนท้ายของเว็บไซต์ โดยทั่วไปจะรวมข้อมูลลิขสิทธิ์ ลิงก์เสริม เป็นต้นsidebar.php: พื้นที่ด้านข้างindex.php: เทมเพลตหลัก เป็นทางเลือกสุดท้ายสำหรับทุกหน้าsingle.php: ใช้สำหรับแสดงบทความบล็อกเดี่ยวpage.php: ใช้สำหรับแสดงหน้าเดียว (เช่น “เกี่ยวกับเรา”, “ติดต่อ”)archive.php: ใช้สำหรับแสดงรายการเก็บถาวรบทความ (เช่น หมวดหมู่, แท็ก, ผู้เขียน, วันที่เก็บถาวร)front-page.php: ใช้สำหรับกำหนดหน้าแรกของเว็บไซต์ (หากตั้งค่าหน้าคงที่เป็นหน้าแรก)home.php: ใช้สำหรับแสดงหน้าดัชนีโพสต์บล็อก (หากตั้งค่าหน้าแรกเป็นแบบคงที่ เทมเพลตนี้จะแสดงรายการโพสต์ล่าสุด)404.php: ใช้สำหรับแสดงหน้าแสดงข้อผิดพลาด “404 ไม่พบ”search.php: ใช้สำหรับแสดงผลการค้นหาfunctions.php: นี่ไม่ใช่ไฟล์เทมเพลต แต่เป็นไฟล์ฟังก์ชันของธีม ใช้สำหรับเพิ่มฟังก์ชัน การลงทะเบียนเมนู แถบด้านข้าง เป็นต้น
แท็กเทมเพลตและลูป
ในไฟล์เทมเพลต คุณจะใช้ “แท็กเทมเพลต” อย่างสม่ำเสมอ นี่คือฟังก์ชัน PHP ที่ WordPress จัดเตรียมไว้สำหรับแสดงผลเนื้อหาแบบไดนามิก เช่น bloginfo('name') แสดงผลชื่อเว็บไซต์the_title() แสดงผลชื่อเรื่องบทความ
แนวคิดหลักที่สำคัญที่สุดคือ “WordPress Loop” มันคือโครงสร้างโค้ด PHP ที่ใช้ตรวจสอบว่าหน้าปัจจุบันมีบทความ (หรือรายการบทความ) ที่ต้องแสดงหรือไม่ และวนซ้ำเพื่อแสดงผลเหล่านั้น ลูปพื้นฐานที่สุดมีดังนี้:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?>
</div>
<?php endwhile; else : ?>
<p><?php _e( 'Sorry, no posts matched your criteria.', 'my-first-theme' ); ?></p>
<?php endif; ?> 这段代码的意思是:如果有文章,就循环(while)每一篇,在循环中显示文章标题和内容;如果没有文章,则显示一条错误信息。`_e()` 是一个用于国际化的翻译函数。
การผสานฟังก์ชันและสไตล์ของธีม
functions.php คือ “สมอง” ของธีมของคุณ ฟังก์ชันหลักทั้งหมดที่ไม่เกี่ยวข้องกับการแสดงผลเทมเพลตควรเพิ่มที่นี่ ไฟล์นี้จะถูกโหลดอัตโนมัติเมื่อธีมเริ่มต้นทำงาน
ลงทะเบียนฟังก์ชันธีม
在 functions.php ในนั้น คุณสามารถขยายฟังก์ชันการทำงานผ่าน “ฮุค” (Hooks) ต่างๆ ที่ WordPress จัดให้ เช่น action hooks และ filter hooks ก่อนอื่น โดยทั่วไปจำเป็นต้องประกาศการสนับสนุนฟังก์ชันบางอย่างของธีม ตัวอย่างเช่น เพิ่มรูปขนาดย่อของบทความ (ภาพเด่น) และการสนับสนุนเมนู:
<?php
function my_first_theme_setup() {
// 让主题支持文章和页面使用“特色图像”
add_theme_support( 'post-thumbnails' );
// 注册导航菜单位置
register_nav_menus( array(
'primary' => __( 'Primary Menu', 'my-first-theme' ),
'footer' => __( 'Footer Menu', 'my-first-theme' ),
) );
// 让 WordPress 管理文档标题标签
add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'my_first_theme_setup' );
?> `add_action()` 将你的函数 my_first_theme_setup จะถูกผูกเข้ากับระบบของ after_setup_theme บน action hook นี้ ตรวจสอบให้แน่ใจว่ามันทำงานในเวลาที่เหมาะสม
การนำเข้า Stylesheet และสคริปต์
ธีมสมัยใหม่ควรโหลดไฟล์สไตล์ชีต (CSS) และ JavaScript อย่างถูกต้องผ่าน wp_enqueue_style() 和 wp_enqueue_script() ฟังก์ชันถูกเพิ่มเข้าไปในคิว แทนที่จะเขียนแท็ก `` หรือ `` โดยตรงในไฟล์เทมเพลต วิธีนี้มีประโยชน์ในการจัดการการพึ่งพา หลีกเลี่ยงการโหลดซ้ำ และปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดของ WordPress
function my_first_theme_scripts() {
// 引入主样式表
wp_enqueue_style( 'my-first-theme-style', get_stylesheet_uri() );
// 引入自定义 JavaScript 文件
wp_enqueue_script( 'my-first-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'my_first_theme_scripts' ); `get_stylesheet_uri()` ชี้ไปที่ไฟล์ style.css ของคุณ `get_template_directory_uri()` ส่งคืน URL ของไดเรกทอรีธีมปัจจุบัน
แนะนำให้อ่าน คู่มือเริ่มต้นการพัฒนา WordPress Theme: สร้างธีมแบบกำหนดเองของคุณตั้งแต่เริ่มต้น。
การสร้างโครงร่างหน้าและชิ้นส่วนเทมเพลต
หน้าเว็บมาตรฐานมักประกอบด้วยส่วนหัว เนื้อหาหลัก และส่วนท้าย WordPress ส่งเสริมให้คุณแยกส่วนที่นำกลับมาใช้ใหม่เป็นไฟล์แยกต่างหาก จากนั้นจึงนำเข้าไฟล์เหล่านั้นในเทมเพลตหลักผ่านฟังก์ชันเฉพาะ
แยกส่วนประกอบของเทมเพลต
สร้าง header.php、footer.php 和 sidebar.phpใน header.php ใน คุณต้องรวมส่วน `` อย่างสมบูรณ์ และจบด้วยคอนเทนเนอร์ส่วนหัวที่ชัดเจน (เช่น แท็ก ``) ใน footer.php มักจะจบด้วยแท็ก `` และ ``
ประกอบหน้าเว็บให้สมบูรณ์
ในเทมเพลตเพจ (เช่น index.php、single.php) คุณสามารถใช้ฟังก์ชันต่อไปนี้เพื่อนำส่วนประกอบเหล่านี้มาใช้:
<?php get_header(); ?>
<main id="primary" class="site-main">
<?php
// 这里放置 WordPress 循环
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// 内容输出
endwhile;
endif;
?>
</main>
<?php get_sidebar(); ?>
<?php get_footer(); ?> `get_header()`、`get_sidebar()` 和 `get_footer()` 会分别加载对应的模板文件。你还可以使用 `get_template_part()` 函数来加载更细粒度的模板部件,例如 `get_template_part( 'template-parts/content', 'page' );` 会尝试加载 template-parts/content-page.php ไฟล์ หากไม่มีอยู่จะโหลด template-parts/content.phpซึ่งช่วยเพิ่มการนำโค้ดกลับมาใช้ใหม่และความสามารถในการบำรุงรักษาได้อย่างมาก
สรุป
การเริ่มต้นสร้างธีม WordPress ตั้งแต่ศูนย์เป็นกระบวนการเรียนรู้ที่ครอบคลุม คุณต้องเริ่มต้นด้วยการสร้างสภาพแวดล้อมการพัฒนาท้องถิ่นที่เหมาะสมและทำความเข้าใจโครงสร้างไฟล์พื้นฐานของธีม หัวใจสำคัญคือการเข้าใจลำดับชั้นเทมเพลตของ WordPress ซึ่งกำหนดวิธีการแสดงผลเนื้อหาต่างๆ ผ่าน functions.php คุณสามารถเพิ่มฟังก์ชันการทำงานและคุณสมบัติที่ทรงพลังให้กับธีม และปฏิบัติตามแนวทางที่ดีที่สุดในการจัดการสไตล์และสคริปต์ สุดท้าย ด้วยการแบ่งหน้าเว็บออกเป็นส่วนประกอบเทมเพลต เช่น ส่วนหัว ส่วนท้าย แถบด้านข้าง และใช้ฟังก์ชันที่ WordPress จัดเตรียมไว้เพื่อประกอบเข้าด้วยกัน คุณจะสามารถสร้างโค้ดธีมที่มีโครงสร้างชัดเจนและบำรุงรักษาได้ง่าย ด้วยการทำตามขั้นตอนเหล่านี้ คุณไม่เพียงแต่จะสามารถสร้างธีมแรกของคุณได้ แต่ยังจะสร้างรากฐานที่มั่นคงสำหรับการพัฒนาโครงการที่ซับซ้อนและเป็นมืออาชีพมากขึ้นในอนาคตอีกด้วย
แนะนำให้อ่าน การเริ่มต้นพัฒนา WordPress Theme: สร้างธีมที่กำหนดเองแรกของคุณตั้งแต่เริ่มต้น。
คำถามที่พบบ่อย (FAQ)
การพัฒนา WordPress Theme จำเป็นต้องเชี่ยวชาญ PHP หรือไม่?
ใช่แล้ว PHP เป็นภาษาโปรแกรมหลักของ WordPress ไฟล์เทมเพลตของธีม (เช่น index.php、page.php) และไฟล์ฟังก์ชัน (functions.php) ล้วนเป็นไฟล์ PHP คุณต้องเข้าใจไวยากรณ์พื้นฐานของ PHP การใช้เงื่อนไข การวนซ้ำ และฟังก์ชันต่างๆ เพื่อที่จะสามารถแสดงผลและจัดการข้อมูลใน WordPress แบบไดนามิก
ในระหว่างการพัฒนา Theme, `page.php` และ `front-page.php` ต่างกันอย่างไร?
page.php ใช้สำหรับแสดงผลหน้า “เพจ” (Page) เดี่ยวที่สร้างใน WordPress เช่น “เกี่ยวกับเรา”, “ติดต่อเรา” เป็นต้น ในขณะที่ front-page.php เป็นเทมเพลตที่ออกแบบมาเฉพาะสำหรับการแสดงผล “หน้าแรก” ของเว็บไซต์ ในส่วน “การตั้งค่า” -> “การอ่าน” ใน WordPress backend หากคุณเลือก “หน้าแบบคงที่” และตั้งค่า “หน้าแรก” เป็นหน้าใดหน้าหนึ่ง WordPress จะให้ความสำคัญกับการใช้ front-page.php เพื่อแสดงหน้านี้ หาก front-page.php ไม่มีอยู่ ระบบจะใช้ page.php。
为什么推荐使用 `wp_enqueue_style()` 来加载 CSS,而不是直接在 HTML 中写 `` 标签?
ใช้ wp_enqueue_style() เป็นวิธีที่แนะนำอย่างเป็นทางการจาก WordPress ซึ่งช่วยให้แน่ใจว่า stylesheet จะโหลดเพียงครั้งเดียว แม้ว่าจะมีปลั๊กอินหรือส่วนของธีมหลายส่วนอ้างอิงไฟล์เดียวกัน นอกจากนี้ยังจัดการการพึ่งพา stylesheet ได้อย่างสะดวก (เช่น สไตล์ของคุณพึ่งพาเฟรมเวิร์กพื้นฐานบางอย่าง) นอกจากนี้ยังทำงานร่วมกับการแคชและปลั๊กอินได้ดีขึ้น และอนุญาตให้ธีมลูกแทนที่สไตล์ของธีมหลักได้อย่างง่ายดาย
ฉันจะทำให้ธีมของฉันรองรับหลายภาษา (สากล) ได้อย่างไร
การทำให้ธีมรองรับหลายภาษาประกอบด้วยสองขั้นตอนหลัก ขั้นแรก ในสตริงข้อความทั้งหมดของธีม ใช้ฟังก์ชันการแปลของ WordPress เช่น ()、_e() 或 esc_html()และกำหนดให้พวกเขาอยู่ใน style.css ที่กำหนดไว้ใน Text Domainตัวอย่างเช่น:_e( 'Hello World', 'my-first-theme' ). ประการที่สอง ใช้เครื่องมือเช่น Poedit เพื่อสแกนโค้ดธีมของคุณ สร้างไฟล์ .pot ไฟล์เทมเพลต ซึ่งนักแปลสามารถใช้สร้าง .po และไฟล์ที่คอมไพล์แล้ว .mo . นำไฟล์ภาษาวางไว้ในไดเรกทอรี /languages/ ของธีม WordPress จะโหลดการแปลที่เกี่ยวข้องโดยอัตโนมัติตามการตั้งค่าภาษาของเว็บไซต์
ขั้นต่อไป ฉันควรทำอย่างไรต่อไป
อ่านเพิ่มเติมและรับความรู้ที่มีประโยชน์
下面这些内容与本文主题相关,适合继续深入阅读。优先从与你当前问题最接近的文章开始看,再逐步扩展到周边主题,效果通常会更好。
- การพัฒนา WordPress Theme: คู่มือฉบับสมบูรณ์ตั้งแต่เริ่มต้นจนถึงระดับเชี่ยวชาญและเทคนิคการปฏิบัติ
- เริ่มต้นการพัฒนา WordPress Theme: คู่มือเทคนิคการสร้างเว็บไซต์มืออาชีพตั้งแต่ศูนย์
- สร้างเว็บไซต์ที่สมบูรณ์แบบ: คู่มือขั้นสูงสุดในการสร้าง WordPress Theme ที่กำหนดเองตั้งแต่เริ่มต้น
- WordPress Theme คืออะไร
- สอนคุณตั้งแต่เริ่มต้นจนเชี่ยวชาญทักษะหลักในการพัฒนา WordPress Theme