พื้นฐานการพัฒนา WordPress Theme และการตั้งค่าแวดล้อม
ในการเริ่มต้นการพัฒนา WordPress Theme ก่อนอื่นต้องเข้าใจแนวคิดหลักของมัน WordPress Theme โดยพื้นฐานแล้วคือชุดของไฟล์ที่ประกอบด้วยสไตล์ชีต ไฟล์เทมเพลต รูปภาพ และไฟล์ JavaScript ซึ่งทั้งหมดนี้ร่วมกันกำหนดรูปลักษณ์และฟังก์ชันการทำงานของเว็บไซต์ การพัฒนา Theme หมายความว่าคุณกำลังสร้างชุดกฎที่สมบูรณ์เพื่อบอก WordPress ว่าจะนำเสนอเนื้อหาจากฐานข้อมูลให้กับผู้เยี่ยมชมอย่างไร
การเตรียมสภาพแวดล้อมก่อนการพัฒนามีความสำคัญอย่างมาก คุณต้องมีสภาพแวดล้อมการพัฒนาท้องถิ่น ซึ่งสามารถทำได้ง่ายๆ โดยการติดตั้งเครื่องมือเช่น XAMPP, MAMP, Local by Flywheel หรือ Docker สภาพแวดล้อมท้องถิ่นอนุญาตให้คุณพัฒนา ทดสอบ และดีบั๊กได้โดยไม่รบกวนเว็บไซต์ออนไลน์ นอกจากนี้ ตัวแก้ไขโค้ดที่มีประสิทธิภาพเป็นเครื่องมือที่จำเป็น เช่น Visual Studio Code, PhpStorm หรือ Sublime Text ซึ่งสามารถให้การเน้นไวยากรณ์ คำแนะนำโค้ด และฟังก์ชันการดีบั๊ก ช่วยเพิ่มประสิทธิภาพการพัฒนาได้อย่างมาก
ถัดไป คุณต้องเข้าใจโครงสร้างไดเรกทอรีของ Theme แต่ละ Theme ตั้งอยู่ใน/wp-content/themes/ไดเรกทอรีและมีอยู่ในรูปแบบโฟลเดอร์แยกต่างหาก Theme พื้นฐานที่สุดต้องการเพียงสองไฟล์:style.css和index.phpในstyle.cssในส่วนหัวของคอมเมนต์ คุณจำเป็นต้องระบุข้อมูลเมตาของธีม
แนะนำให้อ่าน การวิเคราะห์เชิงลึกเกี่ยวกับฟิลด์ที่กำหนดเองของ WordPress: ตั้งแต่พื้นฐานสู่การประยุกต์ใช้ระดับสูง。
/*
Theme Name: 我的第一个主题
Theme URI: https://example.com/my-first-theme
Author: 你的名字
Author URI: https://example.com
Description: 这是一个用于学习WordPress主题开发的简单主题。
Version: 1.0
License: GNU General Public License v2 or later
Text Domain: my-first-theme
*/ นี้style.cssไฟล์ไม่เพียงแต่เป็นสไตล์ชีต แต่ยังเป็น “บัตรประจำตัว” ของธีม WordPress อ่านคอมเมนต์เหล่านี้เพื่อระบุและแสดงธีมของคุณในแอดมิน
ไฟล์เทมเพลตหลักและลำดับชั้นโครงสร้างของธีม
WordPress ใช้ระบบอัจฉริยะที่เรียกว่า “ลำดับชั้นเทมเพลต” เพื่อตัดสินใจว่าไฟล์เทมเพลตใดควรใช้ในการแสดงผลสำหรับคำขอหน้าเว็บเฉพาะ การเข้าใจลำดับชั้นนี้เป็นกุญแจสำคัญในการพัฒนาธีม
ไฟล์เทมเพลตที่สำคัญที่สุดคือindex.phpมันทำหน้าที่เป็นเทมเพล็ตสำรองขั้นสุดท้ายสำหรับทุกหน้า เมื่อ WordPress ไม่พบเทมเพล็ตที่เฉพาะเจาะจงกว่านี้ ก็จะใช้งานนี้ หน้าแรกมักถูกควบคุมโดยfront-page.php或home.phpหน้าโพสต์เดี่ยวใช้single.phpเป็นหลัก และสำหรับประเภทโพสต์เฉพาะ เช่น “ผลิตภัณฑ์” WordPress จะมองหาsingle-product.phpหน้าเพจใช้page.phpหากหน้านั้นมีเทมเพลตที่กำหนดเอง ก็จะใช้page-{slug}.php或page-{id}.phpหน้าจัดเก็บบทความ (เช่น หมวดหมู่, แท็ก, ผู้เขียน, จัดเก็บตามวันที่) จะสอดคล้องกับarchive.phpและรูปแบบที่เฉพาะเจาะจงมากขึ้น เช่นcategory.php、tag.phpเป็นต้น
เทมเพลตส่วนหัวและส่วนท้ายของธีม
เพื่อปฏิบัติตามหลักการ DRY (อย่าทำซ้ำตัวเอง) WordPress ธีมใช้ฟังก์ชันget_header()、get_footer()和get_sidebar()เพื่อนำเข้าส่วนที่ใช้ร่วมกัน ซึ่งหมายความว่าคุณต้องสร้างไฟล์header.php和footer.phpไฟล์สำหรับภาษาต่างๆ ได้
header.phpไฟล์นี้โดยทั่วไปจะประกอบด้วยส่วนหัวของเอกสาร HTML, แท็ก meta, ลิงก์ไปยังสไตล์ชีตและสคริปต์, และพื้นที่นำทางด้านบนของเว็บไซต์ สิ่งสำคัญคือต้องมีฟังก์ชันการเรียกwp_head()ซึ่งอนุญาตให้ WordPress core, ปลั๊กอิน, และธีมเองสามารถทำงานใน<head>บางส่วนฉีดโค้ดที่จำเป็น
แนะนำให้อ่าน คู่มือเริ่มต้นการพัฒนา WordPress Theme: สร้างเว็บไซต์ของคุณตั้งแต่เริ่มต้น。
footer.phpไฟล์ประกอบด้วยข้อมูลส่วนท้ายของเว็บไซต์ การอ้างอิงสคริปต์ ฯลฯ และสิ้นสุดด้วยwp_footer()ฟังก์ชัน ซึ่งคล้ายกับwp_head()ใช้เพื่อฉีดโค้ดที่ด้านล่างของหน้า
ในไฟล์เทมเพลต คุณสามารถนำเข้าได้ดังนี้:
<?php get_header(); ?>
<!-- 主内容区 -->
<?php get_footer(); ?> ฟังก์ชันหลักและ WordPress Loop
ฟังก์ชันการทำงานของธีมไม่ได้จำกัดอยู่เพียงรูปลักษณ์ภายนอก ผ่านทางfunctions.phpไฟล์ คุณสามารถเพิ่มฟังก์ชันการทำงาน จดทะเบียนคุณสมบัติ และผสานปลั๊กอินให้กับธีมของคุณได้ ไฟล์นี้จะถูกโหลดโดยอัตโนมัติเมื่อธีมถูกเปิดใช้งาน ซึ่งเทียบเท่ากับปลั๊กอินเฉพาะสำหรับธีมของคุณ
ทำความเข้าใจกับลูปของ WordPress
WordPress loop เป็นตรรกะหลักในการพัฒนาเทมเพลต มันคือโค้ด PHP ที่ใช้ตรวจสอบว่าหน้าปัจจุบันมีโพสต์ (หรือบทความ) ที่ต้องแสดงหรือไม่ ถ้ามีก็จะวนลูปและแสดงผลแต่ละโพสต์ โครงสร้างลูปพื้นฐานมีดังนี้:
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<!-- 在这里输出文章内容 -->
<h2><?php the_title(); ?></h2>
<div><?php the_content(); ?></div>
<p>ไม่พบบทความใดๆ</p>
<?php endif; ?> ในลูป คุณสามารถใช้แท็กเทมเพลตหลายอย่างเพื่อแสดงข้อมูลโพสต์ เช่นthe_title()แสดงหัวข้อthe_content()แสดงเนื้อหาทั้งหมดthe_excerpt()แสดงบทสรุปthe_permalink()รับลิงก์บทความthe_post_thumbnail()แสดงภาพเด่นของบทความ
ลงทะเบียนเมนูและแถบด้านข้าง
เทมเพลตสมัยใหม่มักรองรับให้ผู้ใช้สามารถกำหนดเมนูและวิดเจ็ตผ่านแถบหลังบ้านได้ ซึ่งต้องลงทะเบียนในfunctions.php中进行注册。
แนะนำให้อ่าน เริ่มต้นการพัฒนา WordPress Theme: สร้างธีมที่ปรับแต่งเองเป็นธีมแรกตั้งแต่เริ่มต้น。
ใช้register_nav_menus()ฟังก์ชันสามารถลงทะเบียนตำแหน่งเมนูได้หนึ่งตำแหน่งขึ้นไป:
function mytheme_register_menus() {
register_nav_menus(
array(
'primary-menu' => __( '主导航菜单', 'my-first-theme' ),
'footer-menu' => __( '页脚菜单', 'my-first-theme' ),
)
);
}
add_action( 'init', 'mytheme_register_menus' ); จากนั้น ในไฟล์เทมเพลต (เช่นheader.php) ใช้ฟังก์ชันwp_nav_menu()เพื่อแสดงเมนู
ในทำนองเดียวกัน แถบด้านข้าง (พื้นที่วิดเจ็ต) ผ่านregister_sidebar()ฟังก์ชันลงทะเบียน:
function mytheme_widgets_init() {
register_sidebar(
array(
'name' => __( '主侧边栏', 'my-first-theme' ),
'id' => 'sidebar-1',
'description' => __( '在这里添加你的挂件。', 'my-first-theme' ),
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
)
);
}
add_action( 'widgets_init', 'mytheme_widgets_init' ); ในเทมเพลต ใช้dynamic_sidebar( 'sidebar-1' )เรียกใช้พื้นที่นี้
สไตล์ สคริปต์ และการปรับแต่งธีม
เพื่อให้ธีมมีความเป็นมืออาชีพและเป็นมิตรกับผู้ใช้มากขึ้น จำเป็นต้องจัดการการโหลดสไตล์และสคริปต์อย่างถูกต้อง และพยายามผสานฟังก์ชันตัวปรับแต่งที่มีอยู่ใน WordPress ให้มากที่สุด
การโหลดสไตล์และสคริปต์แบบคิว
วิธีที่ถูกต้องคือการใช้wp_enqueue_style()和wp_enqueue_script()ฟังก์ชัน เพิ่มพวกมันเข้าไปในfunctions.phpในฮุค นี้ทำให้มั่นใจได้ว่าการพึ่งพาถูกต้องและหลีกเลี่ยงการโหลดซ้ำซ้อน
function mytheme_enqueue_assets() {
// 主题主样式表
wp_enqueue_style( 'mytheme-style', get_stylesheet_uri() );
// 谷歌字体
wp_enqueue_style( 'mytheme-google-fonts', 'https://fonts.googleapis.com/css2?family=Roboto&display=swap', array(), null );
// 主JavaScript文件
wp_enqueue_script( 'mytheme-script', get_template_directory_uri() . '/js/main.js', array( 'jquery' ), '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_assets' ); การรวมตัวปรับแต่งธีม
WordPress Customizer อนุญาตให้ผู้ใช้ปรับการตั้งค่าธีมในขณะที่ดูตัวอย่างแบบเรียลไทม์ ผ่านทาง$wp_customizeวัตถุ คุณสามารถเพิ่มการตั้งค่าและตัวควบคุมได้
ตัวอย่างเช่น เพิ่มตัวเลือกสำหรับสีของชื่อเว็บไซต์:
function mytheme_customize_register( $wp_customize ) {
// 添加一个设置(存储在数据库中)
$wp_customize->add_setting( 'header_color', array(
'default' => '#333333',
'sanitize_callback' => 'sanitize_hex_color',
) );
// 添加一个颜色选择器控件
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'header_color', array(
'label' => __( '页眉颜色', 'my-first-theme' ),
'section' => 'colors',
'settings' => 'header_color',
) ) );
}
add_action( 'customize_register', 'mytheme_customize_register' ); จากนั้นในstyle.cssหรือสไตล์ที่ส่งออกแบบไดนามิกของคุณ ให้ใช้ค่านี้:
function mytheme_customizer_css() {
?>
<style type="text/css">
.site-header {
background-color: <?php echo esc_attr( get_theme_mod( 'header_color', '#333333' ) ); ?>;
}
</style>
<?php
}
add_action( 'wp_head', 'mytheme_customizer_css' ); สรุป
การพัฒนา WordPress Theme เป็นทักษะที่น่าสนใจที่ผสมผสานการออกแบบและการเขียนโปรแกรมเข้าด้วยกัน มันเริ่มต้นด้วยความเข้าใจไฟล์หลัก (เช่นstyle.css和index.php) และเจาะลึกลงไปในลำดับชั้นของเทมเพลต, WordPress Loop และfunctions.phpในฟังก์ชันอันทรงพลังของ ผ่านการจัดระเบียบไฟล์เทมเพลตอย่างถูกต้อง การใช้แท็กเทมเพลต การลงทะเบียนเมนูและพื้นที่วิดเจ็ต รวมถึงการใช้วิธีการโหลดทรัพยากรแบบคิว คุณสามารถสร้างธีมที่มีโครงสร้างชัดเจนและประสิทธิภาพดีได้ ยิ่งไปกว่านั้น การรวมตัวปรับแต่งธีมจะมอบประสบการณ์การปรับแต่งที่ใช้งานง่ายให้กับผู้ใช้ขั้นสุดท้าย หลังจากเชี่ยวชาญพื้นฐานเหล่านี้แล้ว คุณจะมีความสามารถในการเปลี่ยนการออกแบบของคุณให้เป็นธีม WordPress ที่มีฟังก์ชันสมบูรณ์ และวางรากฐานที่มั่นคงสำหรับการเรียนรู้เฟรมเวิร์กธีมขั้นสูง (เช่น Underscores หรือ Genesis) และการพัฒนา Block Theme
คำถามที่พบบ่อย (FAQ)
การพัฒนา WordPress Theme จำเป็นต้องเชี่ยวชาญ PHP หรือไม่?
แม้ว่าจะไม่จำเป็นต้องถึงระดับผู้เชี่ยวชาญ แต่พื้นฐาน PHP ที่มั่นคงเป็นสิ่งจำเป็น คุณต้องเข้าใจไวยากรณ์ PHP ตัวแปร ฟังก์ชัน ลูป และคำสั่งเงื่อนไข เนื่องจากแกนหลักของ WordPress และไฟล์เทมเพลตธีมล้วนเขียนด้วย PHP ในเวลาเดียวกัน การมีความรู้ที่ดีใน HTML, CSS และ JavaScript พื้นฐานก็มีความสำคัญเช่นกัน
จะทำให้ธีมของฉันเป็นไปตามมาตรฐานอย่างเป็นทางการของ WordPress ได้อย่างไร
เพื่อให้ธีมของคุณเป็นไปตามมาตรฐานและอาจได้รับการบรรจุในไดเรกทอรีธีมอย่างเป็นทางการของ WordPress คุณต้องปฏิบัติตาม 'คู่มือการพัฒนา WordPress Theme' และ 'ข้อกำหนดการตรวจสอบธีม' ซึ่งรวมถึงการใช้แนวทางการเขียนโค้ดที่ปลอดภัย การเตรียมพร้อมสำหรับสากล (ใช้ text domain และฟังก์ชันแปลภาษา) การรับรองการออกแบบที่ตอบสนองต่ออุปกรณ์ต่างๆ ไม่ใส่ฟังก์ชันสำคัญลงในธีมแบบ hardcode (แนะนำให้ใช้ child theme หรือปลั๊กอิน) และการทดสอบผ่านปลั๊กอิน Theme Check ที่ทางราชการจัดเตรียมไว้
ทำไมการเปลี่ยนแปลงธีมของฉันถึงไม่แสดงผลหลังรีเฟรช?
โดยทั่วไปแล้วปัญหานี้มักเกิดจากแคชของเบราว์เซอร์หรือกลไกแคชของ WordPress ก่อนอื่นให้ลองกดCtrl + F5(Windows/Linux) หรือCmd + Shift + R(Mac) พร้อมกันเพื่อรีเฟรชแบบแข็งเพื่อล้างแคชของเบราว์เซอร์ หากปัญหายังคงอยู่ โปรดตรวจสอบให้แน่ใจว่าคุณอยู่ในสภาพแวดล้อมการพัฒนาในเครื่อง และตรวจสอบว่ามีการติดตั้งปลั๊กอินแคชหรือไม่ ลองปิดการใช้งานชั่วคราว สุดท้ายยืนยันว่าคุณได้แก้ไขไฟล์เทมเพลตที่ถูกต้องและไฟล์ได้รับการบันทึกเรียบร้อยแล้ว
ธีมลูกและธีมแม่แตกต่างกันอย่างไร? ควรใช้เมื่อไหร่?
ธีมหลักเป็นธีมที่สมบูรณ์และเป็นอิสระ ในขณะที่ธีมลูกจะขึ้นอยู่กับธีมหลัก โดยมีเพียงไฟล์ไม่กี่ไฟล์ (อย่างน้อยต้องมีstyle.css) เพื่อแทนที่หรือขยายสไตล์และฟังก์ชันของธีมหลัก เมื่อคุณต้องการปรับแต่งธีมที่มีอยู่ แต่ต้องการไม่สูญเสียการปรับแต่งเหล่านั้นเมื่อธีมหลักมีการอัปเดต คุณควรสร้างธีมลูก นี่เป็นแนวทางปฏิบัติที่ดีที่สุดสำหรับการอัปเกรดและปรับแต่งธีม
จะเพิ่มการสนับสนุนเต็มรูปแบบสำหรับตัวแก้ไข Gutenberg ให้กับธีมของฉันได้อย่างไร?
เพื่อให้สนับสนุนตัวแก้ไข Gutenberg อย่างสมบูรณ์ คุณจำเป็นต้องประกาศคุณสมบัติต่างๆ ภายในfunctions.phpใช้ฟังก์ชันadd_theme_support()ฟังก์ชัน ตัวอย่างเช่น การเพิ่มการสนับสนุนalign-wide和align-fullพาเลตสีที่กำหนดเอง พื้นหลังไล่ระดับสี การควบคุมขนาดฟอนต์ เป็นต้น นอกจากนี้ ให้สร้างสไตล์ชีตแยกต่างหากสำหรับตัวแก้ไขบทความและหน้า และใช้add_editor_style()เพิ่มเข้าไป สำหรับการปรับแต่งที่ลึกซึ้งยิ่งขึ้น คุณอาจต้องเรียนรู้การสร้างบล็อกที่กำหนดเอง
ขั้นต่อไป ฉันควรทำอย่างไรต่อไป
อ่านเพิ่มเติมและรับความรู้ที่มีประโยชน์
下面这些内容与本文主题相关,适合继续深入阅读。优先从与你当前问题最接近的文章开始看,再逐步扩展到周边主题,效果通常会更好。
- ทำไมจึงควรใช้ WooCommerce ในการสร้างร้านค้าออนไลน์
- เหตุใดจึงเลือก WordPress: 10 ข้อได้เปรียบหลักของ CMS แบบโอเพนซอร์ส
- เรียนรู้ WooCommerce ภายใน 10 นาที: คู่มือการสร้างเว็บไซต์อีคอมเมิร์ชจากเริ่มต้นสู่การทำกำไร
- คู่มือฉบับสมบูรณ์ของ WooCommerce: บทเรียนการตั้งค่าระบบอีคอมเมิร์ชขั้นสูงตั้งแต่การติดตั้งจนถึงการเปิดตัว
- WordPress คืออะไร? บทนำที่ครอบคลุมเกี่ยวกับระบบจัดการเนื้อหา