การเตรียมการและการตั้งค่าสภาพแวดล้อม
ก่อนเริ่มเขียนโค้ด คุณต้องแน่ใจว่ามีสภาพแวดล้อมการพัฒนาที่เหมาะสม ซึ่งรวมถึงการติดตั้ง WordPress ภายในเครื่องและโปรแกรมแก้ไขโค้ด สภาพแวดล้อมภายในเครื่องช่วยให้คุณทดสอบและแก้ไขข้อบกพร่องได้อย่างอิสระโดยไม่ส่งผลกระทบต่อเว็บไซต์ออนไลน์ ซอฟต์แวร์สภาพแวดล้อมการพัฒนาภายในเครื่องที่ใช้กันทั่วไป ได้แก่ Local by Flywheel, XAMPP หรือ MAMP
คุณต้องคิดชื่อเฉพาะสำหรับปลั๊กอินของคุณ ชื่อนี้จะถูกใช้เป็นชื่อไดเรกทอรีหลักและชื่อไฟล์หลักของปลั๊กอิน ตัวอย่างเช่น หากปลั๊กอินของคุณชื่อ “Hello World” ไฟล์ปลั๊กอินหลักของคุณสามารถตั้งชื่อเป็น hello-world.phpตรวจสอบให้แน่ใจว่าชื่อและคำอธิบายปลั๊กอินของคุณไม่ซ้ำกันในไดเรกทอรีปลั๊กอินของ WordPress ซึ่งจะช่วยหลีกเลี่ยงความขัดแย้งกับปลั๊กอินอื่น ๆ ได้อย่างมีประสิทธิภาพ
นอกจากนี้ การทำความเข้าใจคู่มือการพัฒนาอย่างเป็นทางการและเอกสารอ้างอิงโค้ดของ WordPress เป็นสิ่งสำคัญอย่างยิ่ง การเรียนรู้แนวคิดหลักของ WordPress เช่น ฮุกแอ็กชัน (Action Hooks), ฮุกตัวกรอง (Filter Hooks), ชอร์ตโค้ด (Shortcodes) และ เอพีไอการตั้งค่า (Settings API) จะเป็นพื้นฐานที่มั่นคงสำหรับการพัฒนาของคุณ
แนะนำให้อ่าน คู่มือการพัฒนา WordPress Plugin ฉบับสมบูรณ์: สร้าง PHP Plugin ระดับมืออาชีพตั้งแต่เริ่มต้น。
สร้างไฟล์ Plugin แรกของคุณ
หัวใจของ Plugin คือไฟล์ PHP หนึ่งไฟล์หรือมากกว่า ในกรณีที่ง่ายที่สุด Plugin สามารถประกอบด้วยไฟล์ PHP เพียงไฟล์เดียวได้ เพื่อสร้าง Plugin ที่ใช้งานได้ คุณต้องเพิ่มข้อมูลเมตาของ Plugin ในรูปแบบคอมเมนต์ที่ส่วนหัวของไฟล์หลักของ Plugin บล็อกคอมเมนต์นี้จะบอก WordPress เกี่ยวกับข้อมูลเมตาทั้งหมดของ Plugin ของคุณ เช่น ชื่อ คำอธิบาย เวอร์ชัน ผู้พัฒนา เป็นต้น
เขียนข้อมูลหัวปลั๊กอิน
WordPress รู้จักและแสดงข้อมูล Plugin โดยการอ่านคอมเมนต์รูปแบบเฉพาะที่ด้านบนของไฟล์ ต่อไปนี้คือตัวอย่างส่วนหัว Plugin ที่พื้นฐานที่สุด:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习和演示的简单 WordPress 插件。
* Version: 1.0.0
* Requires at least: 5.2
* Requires PHP: 7.2
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ บันทึกโค้ดนี้เป็นไฟล์ PHP ใหม่ เช่น my-first-plugin.phpจากนั้น นำไฟล์นี้ไปไว้ในโฟลเดอร์ wp-content/plugins ของเวิร์ดเพรสที่ติดตั้งในเครื่องของคุณ หลังจากนั้น เข้าสู่หน้าควบคุมหลังบ้านของเวิร์ดเพรสในหน้า “ปลั๊กอิน” คุณควรจะเห็นปลั๊กอินใหม่ชื่อ “ปลั๊กอินแรกของฉัน” ปรากฏในรายการ และสามารถเปิดใช้งานได้ ปัจจุบันยังไม่มีฟังก์ชันการทำงานใดๆ
เพิ่มฟังก์ชันพื้นฐานให้กับปลั๊กอิน
หลังจากเปิดใช้งานปลั๊กอิน เราจะเพิ่มฟังก์ชันง่ายๆ ให้กับมัน: เพิ่มข้อความที่กำหนดเองโดยอัตโนมัติที่ส่วนท้ายของเนื้อหาบทความ ซึ่งต้องใช้ฟิลเตอร์ฮุคของ WordPress the_content。
คุณสามารถเพิ่มโค้ดต่อไปนี้ด้านล่างข้อมูลส่วนหัวของปลั๊กอินที่เพิ่งกล่าวถึง:
แนะนำให้อ่าน เริ่มต้นจากศูนย์: คำอธิบายโดยละเอียดเกี่ยวกับกระบวนการพัฒนาปลั๊กอิน WordPress。
/**
* 在文章内容末尾添加自定义文本
*
* @param string $content 当前文章内容。
* @return string 修改后的文章内容。
*/
function mfp_add_footer_text( $content ) {
// 仅针对主循环中的单个文章页面
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><em>ขอบคุณที่อ่านบทความนี้ นำเสนอโดย “ปลั๊กอินแรกของฉัน”</em></p>';
$content .= $custom_text;
}
return $content;
}
// 将自定义函数挂载到 `the_content` 过滤器上
add_filter( 'the_content', 'mfp_add_footer_text' ); โค้ดนี้กำหนดชื่อที่เรียกว่า mfp_add_footer_text ของฟังก์ชันที่รับเนื้อหาบทความ $content เป็นพารามิเตอร์ ภายในฟังก์ชันจะใช้แท็กเงื่อนไข (is_single(), in_the_loop(), is_main_query()) ก่อนเพื่อให้แน่ใจว่าเราจะแก้ไขเนื้อหาเฉพาะในลูปหลักของหน้าบทความเดี่ยวเท่านั้น เพื่อหลีกเลี่ยงการส่งผลกระทบต่อหน้าอื่นๆ เช่น หน้าหลัก หน้ารวมบทความ จากนั้นจึงสร้างข้อความ HTML ที่กำหนดเองและเพิ่มต่อท้ายเนื้อหาดั้งเดิม สุดท้าย ใช้ฟังก์ชัน add_filter เพื่อ “เชื่อม” ฟังก์ชันที่กำหนดเองนี้เข้ากับ the_content บนตัวกรอง
หลังจากบันทึกไฟล์แล้ว ให้รีเฟรชหน้าโพสต์ด้านหน้า คุณจะเห็นข้อความที่เพิ่มเข้ามาที่ท้ายเนื้อหาโพสต์
พัฒนาฟังก์ชันขั้นสูง: สร้างเมนูการจัดการและหน้าตัวเลือก
ปลั๊กอินที่สมบูรณ์แบบมักต้องการการโต้ตอบกับผู้ดูแลระบบ ซึ่งมักทำได้โดยการเพิ่มหน้าการตั้งค่าในส่วนหลัง WordPress มี API ที่หลากหลายสำหรับการสร้างเมนูการจัดการและหน้าตัวเลือก
เพิ่มรายการเมนูปลั๊กอินในแอดมิน
เราจะสร้างหน้าเมนูการจัดการแยกต่างหากสำหรับปลั๊กอิน เพื่อกำหนดค่าตัวเลือกบางอย่าง ซึ่งจำเป็นต้องใช้ add_action ฮุคและ admin_menu action
ในไฟล์หลักของปลั๊กอินของคุณ ให้เพิ่มโค้ดต่อไปนี้:
/**
* 在 WordPress 后台管理菜单中添加一个新的顶级菜单项
*/
function mfp_register_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'my-first-plugin', // 菜单 slug
'mfp_render_settings_page', // 渲染页面的回调函数
'dashicons-admin-plugins', // 图标(可选)
80 // 菜单位置
);
}
add_action( 'admin_menu', 'mfp_register_admin_menu' ); add_menu_page ฟังก์ชันสำหรับการลงทะเบียนเมนูระดับบนใหม่ โดยที่manage_options เป็นตัวระบุสิทธิ์ ซึ่งหมายความว่ามีเพียงผู้ใช้ที่มีสิทธิ์ “จัดการตัวเลือก” (โดยปกติคือผู้ดูแลระบบ) เท่านั้นที่สามารถเห็นเมนูนี้mfp_render_settings_page เป็นชื่อฟังก์ชันที่เราจะกำหนดต่อไป สำหรับการแสดงผลเนื้อหา HTML ของหน้าการตั้งค่า
แนะนำให้อ่าน คู่มือขั้นสูงสุดในการพัฒนา WordPress Plugin: สร้างปลั๊กอินที่กำหนดเองตัวแรกของคุณตั้งแต่เริ่มต้น。
การสร้างเนื้อหาของหน้าการตั้งค่า
ตอนนี้ เราจำเป็นต้องกำหนดฟังก์ชัน callback ที่กล่าวถึงข้างต้น mfp_render_settings_page เพื่อแสดงผลหน้าเพจตั้งค่าอย่างง่าย
/**
* 渲染插件设置页面的内容
*/
function mfp_render_settings_page() {
?>
<div class="wrap">
<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
<form action="/th/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段、安全 nonce 字段等
settings_fields( 'mfp_settings_group' );
do_settings_sections( 'my-first-plugin' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="th"/></form>
</div>
<?php
} ฟังก์ชันนี้ส่งออกโครงสร้างพื้นฐานของหน้าเพจจัดการ WordPress ซึ่งประกอบด้วยหัวเรื่องและแบบฟอร์ม มันใช้ฟังก์ชันหลักสองฟังก์ชันของ WordPress Settings API:settings_fields 和 do_settings_sectionsเพื่อให้ทำงานได้ เรายังต้องลงทะเบียนการตั้งค่า ส่วน และฟิลด์
ใช้ Settings API เพื่อลงทะเบียนตัวเลือก
WordPress Settings API ให้วิธีการที่ปลอดภัยและเป็นมาตรฐานในการจัดการการลงทะเบียน การบันทึก และการตรวจสอบตัวเลือกของฟอร์ม เราจะเพิ่มโค้ดต่อไปนี้เพื่อลงทะเบียนฟิลด์ข้อความแบบง่าย
/**
* 初始化插件的设置
*/
function mfp_settings_init() {
// 注册一个新的设置项 `mfp_options` 到数据库
register_setting( 'mfp_settings_group', 'mfp_options' );
// 在页面内添加一个新的节
add_settings_section(
'mfp_section_basic',
'基础设置',
'mfp_section_basic_callback',
'my-first-plugin'
);
// 向节中添加一个字段
add_settings_field(
'mfp_field_custom_text',
'自定义页脚文本',
'mfp_field_custom_text_callback',
'my-first-plugin',
'mfp_section_basic',
array( 'label_for' => 'mfp_field_custom_text' )
);
}
add_action( 'admin_init', 'mfp_settings_init' );
/**
* 节描述的回调函数(可以为空)
*/
function mfp_section_basic_callback() {
echo '<p>ตั้งค่าตัวเลือกพื้นฐานของปลั๊กอินที่นี่</p>';
}
/**
* 字段 `mfp_field_custom_text` 的回调函数,用于输出 HTML 输入框
*/
function mfp_field_custom_text_callback() {
// 从数据库获取现有值
$options = get_option( 'mfp_options' );
$value = isset( $options['custom_text'] ) ? $options['custom_text'] : '';
?>
<input type="text"
id="mfp_field_custom_text"
name="mfp_options[custom_text]"
value="<?php echo esc_attr( $value ); ?>"
class="regular-text" />
<p class="description">ข้อความนี้จะปรากฏที่ส่วนท้ายของบทความ</p>
<?php
} ตอนนี้ เราจำเป็นต้องแก้ไขฟังก์ชันก่อนหน้านี้ mfp_add_footer_text ให้ใช้ค่าตัวเลือกที่เราเพิ่งสร้างขึ้น แทนที่ข้อความที่เขียนตายตัว
function mfp_add_footer_text( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$options = get_option( 'mfp_options' );
$custom_text = isset( $options['custom_text'] ) ? $options['custom_text'] : '';
if ( ! empty( $custom_text ) ) {
$content .= '<p><em>' . esc_html( $ข้อความที่กำหนดเอง ) . '</em></p>';
}
}
return $content;
} จนถึงตอนนี้ ปลั๊กอินของคุณมีหน้าเซ็ตติ้งแอดมินที่สมบูรณ์แล้ว ผู้ดูแลระบบสามารถค้นหาหน้าเซ็ตติ้งได้ภายใต้เมนู “ปลั๊กอินของฉัน” ป้อนข้อความส่วนท้ายที่กำหนดเอง และบันทึก ข้อความนี้จะแสดงแบบไดนามิกที่ส่วนท้ายของบทความในหน้าเว็บไซต์
การปรับปรุงปลั๊กอินและการปฏิบัติด้านความปลอดภัย
เมื่อพัฒนาปลั๊กอิน การปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดมีความสำคัญอย่างยิ่งต่อความปลอดภัย ประสิทธิภาพ และการบำรุงรักษา ต่อไปนี้คือหลักการสำคัญบางประการ
รับประกันความปลอดภัยของโค้ด
ข้อมูลทั้งหมดที่ได้รับจากส่วนหน้าหรืออินเทอร์เฟซการจัดการ ต้องได้รับการตรวจสอบ ทำความสะอาด และหลีกเลี่ยงก่อนที่จะส่งออกไปยังเบราว์เซอร์หรือจัดเก็บในฐานข้อมูล ซึ่งสามารถป้องกันช่องโหว่ด้านความปลอดภัย เช่น การโจมตีแบบ Cross-Site Scripting (XSS) และการฉีด SQL
- การหลีกเลี่ยงผลลัพธ์: ใช้ฟังก์ชันเช่น
esc_html(),esc_attr(),esc_url(),wp_kses_post()เพื่อหลีกหนีเนื้อหาแบบไดนามิก - การทำความสะอาดข้อมูลนำเข้า: ใช้ฟังก์ชันเช่น
sanitize_text_field(),sanitize_email(),intval()เพื่อจัดการข้อมูลฟอร์มที่ผู้ใช้ส่งมา - การตรวจสอบสิทธิ์: ในฟังก์ชัน callback ของผู้ดูแลระบบ ให้ใช้
current_user_can()เพื่อยืนยันสิทธิ์ซ้ำ ในจุดปลายทาง AJAX หรือ REST API ที่เกี่ยวข้องกับการปรับเปลี่ยนข้อมูล ต้องใช้ nonce (โทเค็นตัวเลข) เพื่อการตรวจสอบ
ปฏิบัติตามมาตรฐานการเข้ารหัสของ WordPress
การใช้มาตรฐานการเข้ารหัสของ WordPress ช่วยให้แน่ใจว่าสไตล์โค้ดของคุณสอดคล้องกับโค้ดหลัก เพิ่มความอ่านง่าย และอำนวยความสะดวกให้กับนักพัฒนาคนอื่นๆในการทำงานร่วมกัน ซึ่งรวมถึงการใช้การย่อหน้า สไตล์วงเล็บ ข้อตกลงการตั้งชื่อ (ใช้ตัวพิมพ์เล็กและขีดล่างสำหรับฟังก์ชันและตัวแปร) เป็นต้น คุณสามารถใช้ PHP CodeSniffer ร่วมกับกฎมาตรฐานของ WordPress เพื่อตรวจสอบโค้ดโดยอัตโนมัติ
การสนับสนุนความเป็นสากล
ตั้งแต่เริ่มต้น การเพิ่มการสนับสนุนสากลให้กับปลั๊กอินของคุณ ช่วยให้ผู้ใช้ทั่วโลกแปลเป็นภาษาของตนเองได้อย่างง่ายดาย ซึ่งทำได้ผ่านขั้นตอนหลักดังนี้
1. 在插件头部注释中正确设置 Text Domain 和 Domain Path。
2. 在所有需要翻译的字符串周围使用 WordPress 的翻译函数,如 (), _e(), esc_html() เป็นต้น
3. 使用工具如 Poedit 来生成 .pot ไฟล์เทมเพลตสำหรับผู้แปลในการสร้าง .po 和 .mo ไฟล์แปล
ตัวอย่างเช่น การแปลข้อความคำอธิบายในหน้าการตั้งค่าเป็นภาษาต่างประเทศ:
function mfp_section_basic_callback() {
echo '<p>' . esc_html__( '在这里配置插件的基础选项。', 'my-first-plugin' ) . '</p>';
} สรุป
บทความนี้เริ่มต้นจากศูนย์ พาคุณผ่านกระบวนการสร้างปลั๊กอิน WordPress พื้นฐานแต่ครบถ้วนสมบูรณ์ทุกขั้นตอน เราได้ครอบคลุมตั้งแต่การเตรียมสภาพแวดล้อม การสร้างไฟล์ปลั๊กอิน การเขียนข้อมูลส่วนหัวของปลั๊กอิน ไปจนถึงการใช้ action hooks และ filter hooks เพื่อเพิ่มเนื้อหาลงในบทความ และการใช้ WordPress Settings API เพื่อสร้างอินเทอร์เฟซการจัดการหลังบ้านที่ซับซ้อน สุดท้าย เราได้พูดถึงแนวปฏิบัติในการปรับปรุงที่สำคัญในการพัฒนาปลั๊กอิน เช่น ความปลอดภัย มาตรฐานการเขียนโค้ด และการทำให้เป็นสากล
จากการปฏิบัตินี้ คุณน่าจะเข้าใจกระบวนการหลักและเครื่องมือพื้นฐานในการพัฒนาปลั๊กอิน WordPress แล้ว ขั้นตอนต่อไป คุณสามารถลองพัฒนาฟังก์ชันการทำงานที่ซับซ้อนมากขึ้นได้ เช่น การสร้างประเภทบทความที่กำหนดเอง ตารางฐานข้อมูลที่กำหนดเอง การใช้ jQuery เพื่อเพิ่มการโต้ตอบ หรือการส่งปลั๊กอินของคุณไปยังไดเรกทอรีปลั๊กอินอย่างเป็นทางการของ WordPress จำไว้ว่า การเรียนรู้อย่างต่อเนื่องและการอ่านโค้ดหลักเป็นวิธีที่ดีที่สุดในการพัฒนาทักษะการพัฒนา
คำถามที่พบบ่อย (FAQ)
จะดีบัก WordPress Plugin ของฉันได้อย่างไร?
การเปิดใช้งานโหมดดีบักของ WordPress เป็นขั้นตอนแรก ในของคุณ wp-config.php ในไฟล์, ตั้งค่า WP_DEBUG เป็น trueนี่จะแสดงข้อผิดพลาด คำเตือน และการแจ้งเตือนของ PHP โดยตรงบนหน้า
ในเวลาเดียวกัน สามารถใช้ error_log() ฟังก์ชั่นเพื่อเขียนข้อมูลดีบักแบบกำหนดเองลงในบันทึกข้อผิดพลาดของเซิร์ฟเวอร์ หรือใช้เครื่องมือนักพัฒนาของเบราว์เซอร์ (คอนโซลและแท็บเครือข่าย) เพื่อดีบัก JavaScript และคำขอ AJAX สำหรับตรรกะที่ซับซ้อน การใช้เครื่องมือดีบักมืออาชีพ เช่น Xdebug จะได้ผลลัพธ์เป็นสองเท่าด้วยความพยายามครึ่งหนึ่ง
ปลั๊กอินของฉันจะขัดแย้งกับธีมหรือปลั๊กอินอื่นหรือไม่?
เป็นไปได้ โดยเฉพาะอย่างยิ่งเมื่อจัดการกับฮุคเดียวกัน ใช้ชื่อตัวแปรโกลบอลหรือชื่อคลาสทั่วไป เพื่อลดความขัดแย้งให้มากที่สุด โปรดแน่ใจว่าได้เพิ่มคำนำหน้าที่ไม่ซ้ำใครให้กับฟังก์ชั่น คลาส ตัวแปร และชื่อตัวเลือกทั้งหมดของคุณ ตัวอย่างเช่น อย่าใช้ add_footer_text, แต่ให้ใช้คล้ายกับ myplugin_add_footer_text ชื่อ
ก่อนที่จะแก้ไขเนื้อหาทั่วโลก (เช่น ตัวแปรการค้นหา) ควรทำการตรวจสอบอย่างละเอียดและกำหนดเงื่อนไขที่เหมาะสม ควรทดสอบปลั๊กอินของคุณในสภาพแวดล้อมและชุดธีมที่หลากหลายให้มากที่สุดก่อนเผยแพร่
ฉันต้องเรียนรู้เทคโนโลยีใดบ้างเพื่อพัฒนาปลั๊กอินระดับสูง?
นอกจากพื้นฐาน PHP ที่แน่นแล้ว คุณยังต้องมีความเข้าใจอย่างลึกซึ้งใน:
- JavaScript: สำหรับการโต้ตอบกับส่วนหน้าและการพัฒนาเครื่องมือปรับแต่ง WordPress
- jQuery: แม้ว่า WordPress จะกำลังเปลี่ยนไปใช้เฟรมเวิร์ก JS ที่ทันสมัย แต่ jQuery ยังคงถูกใช้อย่างแพร่หลาย
- REST API: ใช้สำหรับสร้างแอปพลิเคชันส่วนหน้าที่แยกออกจากกันหรือโต้ตอบกับบริการภายนอก
- ความรู้เกี่ยวกับฐานข้อมูล: เข้าใจโครงสร้างฐานข้อมูลของ WordPress และวิธีการสร้างคำสั่งค้นหาที่กำหนดเองหรือสร้างตารางใหม่อย่างปลอดภัย
- Composer: ใช้สำหรับจัดการแพ็คเกจ PHP ที่ขึ้นอยู่กับ
เครื่องมือสำหรับการสร้าง: เช่น Webpack, ใช้สำหรับการจัดการการคอมไพล์ของ JavaScript และ SASS รุ่นใหม่
จะเผยแพร่ปลั๊กอินของฉันไปยังไดเรกทอรีอย่างเป็นทางการของ WordPress ได้อย่างไร
ก่อนอื่น ตรวจสอบให้แน่ใจว่าปลั๊กอินของคุณเป็นไปตามแนวทางการพัฒนาปลั๊กอินอย่างเป็นทางการและแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย คุณต้องมีบัญชี WordPress.org ส่งไฟล์บีบอัดปลั๊กอินของคุณเพื่อตรวจสอบภายใต้บัญชีของคุณ กระบวนการตรวจสอบจะตรวจสอบคุณภาพโค้ด ความปลอดภัย ใบอนุญาต (ต้องเข้ากันได้กับ GPL) เป็นต้น
หากปลั๊กอินของคุณผ่านการตรวจสอบ มันจะถูกเพิ่มไปยังที่เก็บ SVN และคุณสามารถใช้ SVN เพื่ออัปเดตและบำรุงรักษาปลั๊กอินของคุณได้ หลังจากเผยแพร่ ผู้ใช้จะสามารถค้นหา ติดตั้ง และอัปเดตปลั๊กอินของคุณได้โดยตรงในแดชบอร์ด WordPress ของพวกเขา
ขั้นต่อไป ฉันควรทำอย่างไรต่อไป
อ่านเพิ่มเติมและรับความรู้ที่มีประโยชน์
下面这些内容与本文主题相关,适合继续深入阅读。优先从与你当前问题最接近的文章开始看,再逐步扩展到周边主题,效果通常会更好。
- การวิเคราะห์กระบวนการสร้างเว็บไซต์ทั้งหมด: คู่มือปฏิบัติการด้านเทคนิคและ SEO Optimization ตั้งแต่เริ่มต้นจนถึงการเปิดตัว
- วิธีการเลือกและปรับแต่งธีม WordPress ที่สมบูรณ์แบบสำหรับคุณ
- คู่มือการพัฒนา WordPress Plugin: สร้างปลั๊กอินที่กำหนดเองตัวแรกของคุณตั้งแต่เริ่มต้น
- เป็นนักพัฒนา WordPress Plugin: คู่มือฉบับสมบูรณ์จากศูนย์ถึงหนึ่ง
- คู่มือขั้นสูงสุดในการสร้างเว็บไซต์: การวิเคราะห์กระบวนการพัฒนาระดับมืออาชีพตั้งแต่เริ่มต้นจนสำเร็จ