WordPress là hệ thống quản trị nội dung phổ biến nhất toàn cầu, khả năng mở rộng mạnh mẽ của nó chủ yếu nhờ vào các plugin. Bằng cách phát triển plugin, bạn có thể thêm bất kỳ chức năng tùy chỉnh nào cho trang web mà không cần sửa đổi mã lõi. Hướng dẫn này sẽ dẫn bạn qua toàn bộ quá trình xây dựng plugin chức năng đầu tiên, bao gồm mọi bước quan trọng từ chuẩn bị môi trường, viết mã đến phát hành kiểm thử.
Công tác chuẩn bị và thiết lập môi trường
Trước khi viết dòng mã đầu tiên, bạn cần một môi trường phát triển phù hợp. Điều này không chỉ nâng cao hiệu quả mà còn tránh được rủi ro có thể phát sinh khi gỡ lỗi trên trang web thực tế.
Thiết lập môi trường phát triển cục bộ
Khuyến nghị sử dụng các gói phần mềm máy chủ cục bộ như XAMPP, MAMP hoặc Laragon. Chúng có thể cài đặt Apache, MySQL và PHP chỉ với một cú nhấp chuột, mô phỏng hoàn hảo môi trường trực tuyến. Hãy đảm bảo phiên bản PHP của bạn tương thích với phiên bản WordPress mục tiêu, thông thường trang web chính thức của WordPress sẽ cung cấp các yêu cầu phiên bản mới nhất.
Đọc thêm Hướng dẫn toàn diện phát triển plugin WordPress: Tạo plugin chức năng đầu tiên từ con số 0。
Cài đặt WordPress và trình soạn thảo mã
Cài đặt một trang WordPress mới hoàn toàn trên máy chủ cục bộ để phát triển và kiểm tra plugin. Đồng thời, chọn một trình soạn thảo mã mạnh mẽ như Visual Studio Code hoặc PhpStorm. Các trình soạn thảo này hỗ trợ tốt cho tô sáng cú pháp PHP, gợi ý mã và gỡ lỗi, có thể cải thiện đáng kể trải nghiệm viết mã.
Tạo tệp plugin đầu tiên của bạn
Một plugin WordPress cơ bản nhất có thể chỉ bao gồm một tệp duy nhất. Chúng ta sẽ bắt đầu với một plugin đơn giản “Hello World” để hiểu cấu trúc của plugin.
Cấu trúc tệp chính của plugin
Đầu tiên, trong thư mục wp-content/plugins của WordPress, hãy tạo một thư mục mới, ví dụ my-first-pluginTrong thư mục đó, tạo tập tin plugin chính, thường được đặt tên theo tên plugin, ví dụ như my-first-plugin.php。
Mỗi plugin phải chứa chú thích thông tin plugin cụ thể ở đầu tập tin, đây là yếu tố quan trọng để WordPress nhận diện plugin. Dưới đây là một ví dụ cơ bản nhất:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习的简单功能插件。
* Version: 1.0.0
* Author: 你的名字
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ Sau khi lưu tập tin, truy cập trang “Plugins” trong bảng điều khiển WordPress, bạn sẽ thấy plugin này và có thể kích hoạt nó. Mặc dù hiện tại nó chưa có chức năng nào, nhưng bạn đã tạo thành công một khung plugin tuân thủ quy định.
Đọc thêm Hướng dẫn từng bước từ con số 0 để thành thạo phát triển plugin WordPress。
Thêm chức năng cơ bản cho plugin
Sau khi kích hoạt plugin, hãy thêm một tính năng đơn giản cho nó: thêm một dòng văn bản tùy chỉnh vào chân trang website. Chúng ta sẽ sử dụng wp_footer Móc.
Dưới phần chú thích thông tin plugin, hãy thêm đoạn mã sau:
// 在网站页脚输出自定义文本
function myfp_add_footer_text() {
echo '<p style="text-align: center;">Cảm ơn bạn đã sử dụng plugin đầu tiên của tôi!</p>';
}
add_action( 'wp_footer', 'myfp_add_footer_text' ); Lưu tệp và làm mới giao diện front-end của website, bạn sẽ thấy dòng văn bản này được căn giữa ở cuối trang. Ví dụ này minh họa cách sử dụng add_action() để “gắn” hàm tùy chỉnh của bạn vào các điểm thực thi chính của WordPress.
Thực hiện một tính năng quản lý hữu ích
Một plugin hoàn chỉnh thường cần cung cấp giao diện cấu hình trong khu vực quản trị WordPress. Tiếp theo, chúng ta sẽ thêm một trang cài đặt đơn giản cho plugin, cho phép quản trị viên tùy chỉnh văn bản hiển thị ở chân trang.
Tạo trang menu quản trị
Chúng ta cần thêm một trang menu con dưới menu “Cài đặt” trong khu vực quản trị. Điều này cần sử dụng add_options_page() Hàm.
Đầu tiên, tạo một hàm để hiển thị nội dung HTML của trang cài đặt và gắn nó vào admin_menu hook.
Đọc thêm Bắt Đầu Từ Con Số 0: Tại Sao Nên Chọn Phát Triển Plugin WordPress。
// 添加插件设置页面到后台菜单
function myfp_add_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限(管理员)
'my-first-plugin', // 菜单slug
'myfp_settings_page' // 用于输出页面内容的回调函数
);
}
add_action( 'admin_menu', 'myfp_add_admin_menu' );
// 设置页面的HTML内容
function myfp_settings_page() {
?>
<div class="wrap">
<h1>Cài đặt plugin đầu tiên của tôi</h1>
<form method="post" action="/vi/options.php/" data-trp-original-action="options.php">
<?php
settings_fields( 'myfp_settings_group' ); // 设置字段组
do_settings_sections( 'my-first-plugin' ); // 设置区域
submit_button(); // 提交按钮
?>
<input type="hidden" name="trp-form-language" value="vi"/></form>
</div>
<?php
} Đăng ký cài đặt, trường và lưu trữ dữ liệu
Chỉ có trang thôi là chưa đủ, chúng ta cần sử dụng WordPress Settings API để đăng ký, xác thực và lưu các tùy chọn một cách an toàn. Điều này liên quan đến ba hàm cốt lõi:register_setting(), add_settings_section() 和 add_settings_field()。
// 初始化插件设置
function myfp_settings_init() {
// 注册一个新的设置项到数据库的 `wp_options` 表
register_setting( 'myfp_settings_group', 'myfp_footer_text' );
// 在设置页面添加一个区域
add_settings_section(
'myfp_section',
'页脚文字设置',
null, // 区域描述回调函数,这里不需要
'my-first-plugin'
);
// 在刚添加的区域里创建一个字段
add_settings_field(
'myfp_field_footer',
'显示的文本',
'myfp_field_footer_cb', // 用于输出字段HTML的回调函数
'my-first-plugin',
'myfp_section'
);
}
add_action( 'admin_init', 'myfp_settings_init' );
// 渲染文本输入字段的回调函数
function myfp_field_footer_cb() {
$text = get_option( 'myfp_footer_text', '感谢使用我的第一个插件!' ); // 获取已保存的值
echo '<input type="text" name="myfp_footer_text" value="' . esc_attr( $text ) . '" class="regular-text">';
echo '<p class="description">Văn bản được nhập ở đây sẽ hiển thị ở chân trang web.</p>';
} Cập nhật chức năng để sử dụng cài đặt đã lưu
Cuối cùng, chỉnh sửa đoạn mã chúng ta đã viết trước đây myfp_add_footer_text hàm để nó đọc giá trị cài đặt quản trị viên từ cơ sở dữ liệu.
function myfp_add_footer_text() {
$footer_text = get_option( 'myfp_footer_text', '感谢使用我的第一个插件!' );
if ( ! empty( $footer_text ) ) {
echo '<p style="text-align: center;">'`. esc_html($footer_text)`.'</p>';
}
}
add_action( 'wp_footer', 'myfp_add_footer_text' ); Bây giờ, truy cập phần “Cài đặt” -> “Plugin của tôi” trong trang quản trị WordPress, bạn có thể sửa văn bản chân trang và lưu lại. Làm mới giao diện người dùng của trang web, bạn sẽ thấy nội dung tùy chỉnh có hiệu lực.
Chuẩn bị cho việc bảo mật, tối ưu hóa và phát hành plugin
Một tiện ích mở rộng đủ tiêu chuẩn phải xem xét các phương pháp hay nhất về bảo mật, hiệu suất và quốc tế hóa.
Thực hiện xác thực và mã hóa dữ liệu
Đừng bao giờ tin tưởng dữ liệu đầu vào từ người dùng hoặc dữ liệu xuất trực tiếp từ cơ sở dữ liệu. Trong ví dụ trên, chúng tôi đã sử dụng esc_attr() Thoát ký tự thuộc tính trong trường nhập liệu, sử dụng esc_html() Thoát ký tự đầu ra ở phía frontend. Đối với các tình huống phức tạp hơn, nên sử dụng sanitize_text_field() để làm sạch đầu vào, sử dụng wp_kses_post() để cho phép đầu ra HTML an toàn.
Thêm hỗ trợ quốc tế hóa
Để plugin có thể được sử dụng bởi người dùng toàn cầu, cần chuẩn bị bản dịch cho tất cả các chuỗi hướng đến người dùng. Điều này yêu cầu sử dụng __() 和 _e() và các hàm tương tự, đồng thời khai báo miền văn bản.
Cập nhật chú thích ở phần đầu plugin để đảm bảo Text Domain Đồng nhất với các lần gọi sau đó. Sau đó sửa đổi chuỗi trong mã, ví dụ:
// 在设置字段描述中使用国际化函数
echo '<p class="description">' . esc_html__( '这里输入的文字将显示在网站页脚。', 'my-first-plugin' ) . '</p>';
// 在输出函数中使用
$default_text = __( '感谢使用我的第一个插件!', 'my-first-plugin' );
$footer_text = get_option( 'myfp_footer_text', $default_text ); Sau đó, bạn có thể sử dụng các công cụ như Poedit để tạo .pot tệp mẫu, cung cấp cho người dịch tạo .po 和 .mo tệp dịch.
Thực hiện kiểm tra cuối cùng và đóng gói
Trước khi phát hành, cần kiểm tra chức năng của plugin trong các môi trường khác nhau (như phiên bản PHP khác nhau, phiên bản WordPress khác nhau). Đảm bảo rằng các thao tác như kích hoạt, tắt, lưu cài đặt, xóa dữ liệu không gây ra lỗi hoặc để lại dữ liệu dư thừa. Bạn có thể viết một hàm dọn dẹp gỡ cài đặt, thông qua register_uninstall_hook() Dọn dẹp các tùy chọn cơ sở dữ liệu khi người dùng xóa plugin.
Cuối cùng, nén thư mục plugin của bạn thành .zip tệp. Tệp nén này có thể được cài đặt trực tiếp thông qua tính năng “Tải lên plugin” trong bảng điều khiển WordPress và cũng đáp ứng các yêu cầu định dạng để gửi lên thư mục plugin chính thức của WordPress.
Tóm lại
Thông qua hướng dẫn này, bạn đã hoàn thành toàn bộ quá trình xây dựng một plugin WordPress đầy đủ chức năng từ đầu. Bạn đã học cách tạo các tệp cơ bản của plugin, sử dụng hook hành động để thêm chức năng, tận dụng WordPress Settings API để xây dựng giao diện quản trị phía sau, và hiểu về các kiến thức quan trọng như bảo mật, quốc tế hóa và đóng gói. Plugin văn bản chân trang đơn giản này mặc dù cơ bản, nhưng cấu trúc plugin, cơ chế hook và Settings API mà nó chứa đựng là nền tảng để phát triển bất kỳ plugin phức tạp nào. Tiếp theo, bạn có thể thử khám phá các tính năng nâng cao hơn như Shortcode, loại bài đăng tùy chỉnh, điểm cuối REST API, từng bước nâng cao kỹ năng phát triển plugin của bạn.
FAQ 常见问题
Có phải phát triển plugin WordPress bắt buộc phải thành thạo PHP không?
Đúng vậy, PHP là ngôn ngữ lập trình cốt lõi cho WordPress và phát triển plugin. Bạn cần nắm vững cú pháp cơ bản, hàm, mảng và các khái niệm lập trình hướng đối tượng của PHP. Đồng thời, kiến thức về HTML, CSS và JavaScript cơ bản cũng hữu ích để phát triển các plugin có giao diện người dùng.
Tên tệp chính của plugin có thể đặt tùy ý không?
Có thể, nhưng phải khớp với tên tệp PHP chính trong thư mục plugin. Thông thường, để rõ ràng, tệp chính sẽ được đặt cùng tên với thư mục plugin hoặc đặt tên là index.phpĐiều quan trọng nhất là phần đầu tệp phải chứa khối chú thích thông tin plugin chính xác, WordPress nhận diện plugin bằng cách phân tích khối chú thích này.
Tại sao cài đặt plugin của tôi không có hiệu lực sau khi lưu?
Vui lòng kiểm tra theo các bước sau: trước tiên, đảm bảo trường cài đặt của bạn đã được đăng ký thông qua register_setting() chính xác, và settings_fields() Tên nhóm cài đặt trong lệnh gọi hàm phải khớp với tên đã đăng ký. Tiếp theo, kiểm tra xem thuộc tính action của biểu mẫu có trỏ đến options.phphay không. Cuối cùng, khi xuất ra giao diện người dùng, hãy xác nhận rằng bạn đang sử dụng hàm get_option() và tên tùy chọn được truyền vào phải hoàn toàn khớp với tên đã đăng ký.
Làm thế nào để plugin của tôi dọn dẹp dữ liệu khi bị vô hiệu hóa?
Bạn có thể sử dụng register_uninstall_hook() Sử dụng hàm để đăng ký một hook gỡ cài đặt. Trong hàm callback của hook này, bạn có thể sử dụng delete_option() hàm để xóa tất cả các tùy chọn cơ sở dữ liệu mà plugin đã tạo. Lưu ý rằng hành động này không thể hoàn tác và chỉ nên thực hiện khi người dùng chọn rõ ràng “Xóa” plugin, không phải khi “Vô hiệu hóa”.
Có thể gửi plugin miễn phí lên thư mục chính thức của WordPress không?
Vâng, WordPress chính thức khuyến khích các nhà phát triển gửi các plugin miễn phí đáp ứng tiêu chuẩn lên thư mục plugin của họ. Điều này yêu cầu bạn có một tài khoản WordPress.org và đọc kỹ hướng dẫn gửi plugin. Mã của bạn cần tuân theo các tiêu chuẩn mã hóa nhất định và không được chứa mã độc hại hoặc vi phạm yêu cầu giấy phép. Sau khi gửi thành công, người dùng có thể tìm kiếm và cài đặt plugin của bạn trực tiếp từ bảng điều khiển WordPress.
Bước tiếp theo, chúng ta nên làm gì tiếp theo?
Đọc thêm và kiến thức thực tế
Những nội dung sau đây liên quan đến chủ đề của bài viết này, thích hợp để tiếp tục đọc sâu hơn. Ưu tiên bắt đầu với bài viết gần nhất với vấn đề hiện tại của bạn, rồi dần dần mở rộng sang các chủ đề xung quanh, hiệu quả thường sẽ tốt hơn.
- Làm thế nào để chọn và tùy chỉnh một chủ đề WordPress phù hợp với nhu cầu của bạn?
- Hướng dẫn phát triển plugin WordPress: Từ con số không đến plugin tùy chỉnh đầu tiên của bạn
- Trở thành nhà phát triển plugin WordPress: Hướng dẫn toàn diện từ đầu đến cuối
- Từ con số không đến con số một: Hướng dẫn đầy đủ và kỹ năng thực hành để xây dựng trang web chuyên nghiệp bằng WordPress
- Hướng dẫn toàn diện phát triển plugin WordPress: Từ cơ bản đến chuyên sâu để tạo các tiện ích mở rộng chuyên nghiệp