Bắt đầu hành trình phát triển plugin WordPress có nghĩa là bạn đã thành thục trong việc phát triển phần mềm cho toàn thế giới.

Đọc trong 3 phút
2026-03-11
2026-06-04
1,955
Tôi kiếm được hoa hồng khi bạn mua sắm thông qua các liên kết dưới đây, mà không phát sinh thêm chi phí nào cho bạn.

Bắt đầu hành trình phát triển plugin cho WordPress có nghĩa là bạn đã nắm trong tay khả năng thêm các tính năng mới, tự động hóa các quy trình, và tạo ra giá trị độc đáo cho hàng triệu trang web trên toàn thế giới. Dù là để giải quyết những nhu cầu kinh doanh cụ thể hay để chia sẻ những gì bạn tạo ra với cộng đồng, việc hiểu rõ cấu trúc và nguyên lý cốt lõi của WordPress là bước đầu tiên quan trọng để thành công. Về bản chất, plugin là tập hợp các đoạn mã PHP được viết theo các quy định và API của WordPress, và chúng được tích hợp một cách hoàn hảo vào hệ thống chính. Các plugin này có thể thay đổi hoặc nâng cao chức năng của nền tảng thông qua các công cụ như Hook và Filter.

Xây dựng môi trường phát triển và tạo các plugin cơ bản

Trước khi bạn bắt đầu viết dòng mã đầu tiên, một môi trường phát triển được cô lập và chuyên nghiệp là điều vô cùng quan trọng. Chúng tôi khuyên bạn nên sử dụng các công cụ phát triển trên máy tính cá nhân như Local by Flywheel, DevKinsta hoặc MAMP – những công cụ này cho phép bạn thiết lập nhanh chóng một môi trường phát triển bao gồm PHP, MySQL và WordPress.

Tạo tệp plugin đầu tiên

Mọi thứ bắt đầu từ một tệp PHP. Trong WordPress… wp-content/plugins Trong thư mục, hãy tạo một thư mục mới cho plugin mới của bạn. Ví dụ, chúng ta sẽ tạo một thư mục có tên… my-first-plugin Mở thư mục đó. Sau đó, tạo tập tin chính bên trong thư mục đó; tên của tập tin này thường trùng với tên của thư mục.my-first-plugin.php

Đọc thêm Từ 0 đến 1: Hướng dẫn toàn diện về phát triển plugin WordPress kèm theo các ví dụ thực tế

Ghi chú ở phần đầu của tệp chính này chính là “hồ sơ nhận dạng” của plugin; nó cung cấp toàn bộ thông tin meta cần thiết cho WordPress để nhận diện plugin đó. Dưới đây là cấu trúc cơ bản của tệp này:

UltaHost – Nhà cung cấp dịch vụ máy chủ WordPress chuyên nghiệp
Bảo đảm hoàn tiền trong 30 ngày, băng thông và cơ sở dữ liệu không giới hạn, bảo vệ DDoS miễn phí, mua 3 năm ưu đãi 50%
<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习 WordPress 插件开发的示例插件。
 * Version:           1.0.0
 * Author:            Your Name
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Sau khi lưu file, hãy đăng nhập vào trang quản trị WordPress của bạn, sau đó truy cập trang “Plugins” (Các tiện ích mở rộng). Bạn sẽ thấy một tiện ích mới có tên “My First Plugin” (Tiện ích đầu tiên của tôi). Mặc dù hiện tại tiện ích này chưa có chức năng nào, bạn vẫn có thể kích hoạt hoặc vô hiệu hóa nó. Điều này đánh dấu rằng bạn đã thành công trong việc tạo ra khung công cụ để phát triển các tiện ích mở rộng cho WordPress.

Hiểu rõ các khái niệm cốt lõi: Hook hành động (Action Hook) và Bộ lọc (Filter)

Trọng tâm của việc phát triển plugin cho WordPress chính là cơ chế hook (khớp nối). Cơ chế hook cho phép mã của bạn được thực thi vào những thời điểm nhất định trong quá trình hoạt động của WordPress, nhằm thực hiện các logic do bạn định nghĩa.

Action Hook

Action Hooks được sử dụng để thực thi mã lệnh khi một sự kiện cụ thể xảy ra, chẳng hạn như việc đăng bài, người dùng đăng nhập, hoặc khi một mẫu (template) được tải. Bạn có thể tận dụng chúng để tự động thực hiện các tác vụ cần thiết theo yêu cầu của ứng dụng. add_action() Hàm này sẽ liên kết hàm gọi lại (callback function) của bạn với “hook” tương ứng.

Ví dụ, chúng ta muốn hiển thị một thông báo tùy chỉnh ở phía trên trang chỉnh sửa bài viết trong giao diện quản trị. Chúng ta có thể sử dụng công cụ phù hợp để thực hiện điều này. edit_form_top action hook này.

Đọc thêm Làm thế nào để lựa chọn và phát triển plugin WordPress chất lượng cao: Hướng dẫn từ cơ bản đến nâng cao

// 在文章编辑页面顶部添加自定义提示
add_action( 'edit_form_top', 'myplugin_edit_form_top_message' );
function myplugin_edit_form_top_message( $post ) {
    if ( 'post' === $post-&gt;post_type ) {
        echo '<div class="notice notice-info"><p>Đây là một thông báo tùy chỉnh đến từ ‘Plugin đầu tiên của tôi”!</p></div>';
    }
}

Filter Hook

Các hook lọc (Filter Hooks) được sử dụng để thay đổi dữ liệu. Chúng cho phép bạn chỉnh sửa giá trị của dữ liệu trước khi nó được sử dụng (chẳng hạn như lưu vào cơ sở dữ liệu hoặc hiển thị trên trình duyệt). Bạn có thể sử dụng chúng để thực hiện các thao tác xử lý cần thiết trên dữ liệu. add_filter() Hàm.

Một ví dụ điển hình là việc thay đổi nội dung cuối của bài viết. Chúng ta có thể sử dụng… the_content Bộ lọc.

// 在文章内容末尾附加版权信息
add_filter( 'the_content', 'myplugin_add_copyright_to_content' );
function myplugin_add_copyright_to_content( $content ) {
    if ( is_single() ) {
        $content .= '<p><small>© 2026 Bản quyền thuộc về tác giả. Nội dung bài viết này được tối ưu hóa bằng plugin của tôi.</small></p>';
    }
    return $content;
}

Tạo trang quản lý plugin và các tùy chọn liên quan.

Để cho phép người dùng cấu hình plugin của bạn, bạn cần tạo một trang thiết lập dành cho họ. WordPress cung cấp nhiều API để thêm các trang vào menu quản trị và xử lý các tùy chọn liên quan.

Hosting.com - lưu trữ chia sẻ
Hiệu năng cao, được trang bị CPU AMD EPYC, lưu trữ SSD NVMe và LiteSpeed, hỗ trợ chuyên gia nội bộ 24 giờ/ngày, các biện pháp bảo mật tiên tiến bao gồm SSL, chống brute force, phần mềm độc hại và bảo vệ DDoS, tiết kiệm tới 73%.

Thêm menu quản lý

Sử dụng add_menu_page()add_options_page() Các hàm (functions) có thể giúp bạn thêm một menu cấp cao nhất (top-level menu) hoặc menu con (sub-level menu) cho plugin của mình. Thông thường, các plugin đơn giản sẽ được thêm vào menu “Cài đặt” (Settings) dưới dạng một trang con (sub-page).

Trước hết, chúng ta cần gắn kết một hàm vào quá trình khởi tạo của quản trị viên để đăng ký menu.

// 在管理后台添加设置菜单
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',      // 所需权限
        'myplugin-settings',   // 菜单别名 (slug)
        'myplugin_render_settings_page' // 用于输出页面内容的回调函数
    );
}

Trang cấu hình hiển thị và tùy chọn lưu trữ

Tiếp theo, chúng ta cần định nghĩa… myplugin_render_settings_page Chúng ta sẽ sử dụng các hàm để tạo ra các biểu mẫu HTML trên trang web và xử lý việc lưu trữ dữ liệu từ các biểu mẫu đó. Để thực hiện điều này một cách an toàn, chúng ta sẽ áp dụng API Cài đặt (Settings API) của WordPress để đăng ký, xác thực và lưu trữ các tùy chọn người dùng một cách có kiểm soát.

Đọc thêm Làm thế nào để lựa chọn và phát triển plugin WordPress chất lượng cao: Hướng dẫn từ cơ bản đến nâng cao

// 渲染设置页面
function myplugin_render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Cài đặt plugin của tôi</h1>
        <form action="/vi/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出必要的安全字段和隐藏字段
            settings_fields( 'myplugin_settings_group' );
            // 输出设置章节和字段
            do_settings_sections( 'myplugin-settings' );
            // 输出提交按钮
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="vi"/></form>
    </div>
    <?php
}

// 初始化设置
add_action( 'admin_init', 'myplugin_settings_init' );
function myplugin_settings_init() {
    // 注册一个设置组和字段
    register_setting(
        'myplugin_settings_group', // 设置组名
        'myplugin_option_message'  // 选项名,将保存在 wp_options 表中
    );

    // 添加一个设置章节
    add_settings_section(
        'myplugin_section_basic',
        '基础设置',
        null, // 章节描述回调函数,可以为空
        'myplugin-settings' // 页面别名
    );

    // 向章节添加一个字段
    add_settings_field(
        'myplugin_field_message',
        '自定义消息',
        'myplugin_field_message_render', // 渲染字段 HTML 的函数
        'myplugin-settings',
        'myplugin_section_basic'
    );
}

// 渲染 ‘自定义消息’ 字段
function myplugin_field_message_render() {
    $option = get_option( 'myplugin_option_message' );
    ?>
    <input type='text' name='myplugin_option_message' value='<?php echo esc_attr( $option ); ?>'>
    <p class="description">Những thông điệp được nhập vào ở đây sẽ được hiển thị trên giao diện người dùng.</p>
    &lt;?php
}

Bây giờ, bạn có thể truy cập trang cài đặt có chứa ô nhập văn bản bằng cách điều hướng đến “Cài đặt” -> “Các tiện ích của tôi”, và sau đó lưu thông điệp. Để sử dụng tùy chọn này, bạn có thể thực hiện điều tương tự trực tiếp trên giao diện người dùng. get_option( 'myplugin_option_message' ) Lấy giá trị của nó.

Thực hiện các mã ngắn tùy chỉnh

Các mã ngắn (Shortcodes) cho phép người dùng sử dụng những thẻ đơn giản bao gồm dấu ngoặc vuông ([ và ]) để thực hiện các thao tác cụ thể. [my_shortcode]Việc nhúng nội dung động vào các bài viết, trang web hoặc tiện ích nhỏ là một cách thân thiện với người dùng để các plugin có thể cung cấp những chức năng phức tạp.

Máy chủ chia sẻ của InterServer
Lưu trữ chia sẻ với mức phí $2,50 USD mỗi tháng, giảm giá $0,1 USD trong tháng đầu tiên, mã giảm giá tryinterserver, với 461 ứng dụng đám mây và cài đặt chỉ bằng một cú nhấp chuột.

Đăng ký mã ngắn

Sử dụng add_shortcode() Hãy sử dụng hàm này để đăng ký mã ngắn của bạn. Hàm này nhận hai tham số: thẻ mã ngắn và hàm xử lý.

Ví dụ, chúng ta có thể tạo ra những đoạn mã ngắn (short codes). [display_greeting]Nó có thể hiển thị các lời chào khác nhau tùy theo thời gian, và có thể chấp nhận một thông tin (dữ liệu) nếu được yêu cầu. name Tham số (Parameter).

// 注册自定义短代码
add_shortcode( 'display_greeting', 'myplugin_render_greeting_shortcode' );
function myplugin_render_greeting_shortcode( $atts ) {
    // 设置默认属性值
    $attributes = shortcode_atts(
        array(
            'name' =&gt; '访客',
        ),
        $atts,
        'display_greeting'
    );

    // 获取当前小时
    $hour = date( 'H' );
    $greeting = '';

    if ( $hour &lt; 12 ) {
        $greeting = &#039;早上好&#039;;
    } elseif ( $hour &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

    // 构建输出
    $output = sprintf(
        &#039;<div class="myplugin-greeting"><p><strong>%s, %s!</strong> Chào mừng bạn đến với trang web của chúng tôi.</p></div>',
        esc_html( $greeting ),
        esc_html( $attributes['name'] )
    );

    return $output;
}

Người dùng hiện có thể nhập nội dung trực tiếp trong trình soạn thảo. [display_greeting name="张三"]Trong quá trình hiển thị trang web, nội dung này sẽ được thay thế bằng một lời chào hỏi được tùy chỉnh theo yêu cầu của người dùng.

Tóm lại

Việc phát triển plugin cho WordPress là một quá trình mạnh mẽ và linh hoạt; bí quyết nằm ở việc hiểu rõ và tận dụng hệ thống hook cũng như các API cốt lõi của nền tảng này. Bạn bắt đầu bằng cách tạo một tệp PHP có phần đầu tiêu chuẩn, sau đó mở rộng chức năng thông qua các hook của hệ thống action và filter, xây dựng giao diện cấu hình thân thiện với người dùng bằng API cấu hình, và cung cấp những đoạn mã ngắn (shortcodes) tiện lợi. Như vậy, bạn đã xây dựng được một plugin với cấu trúc cơ bản và các module chức năng cần thiết. Bằng cách kết hợp những module này lại với nhau, cải tiến chúng, đồng thời tuân thủ các tiêu chuẩn lập trình và thực hành tốt nhất về bảo mật của WordPress, bạn sẽ có thể tạo ra những plugin mạnh mẽ, đáp ứng được nhiều nhu cầu khác nhau.

FAQ 常见问题

Để phát triển các plugin cho WordPress, bạn cần nắm vững một số kiến thức cơ bản sau:

Bạn cần nắm vững những kiến thức cơ bản về ngôn ngữ lập trình PHP, vì các plugin chủ yếu được viết bằng PHP. Ngoài ra, việc hiểu biết cơ bản về HTML, CSS và JavaScript sẽ giúp bạn tạo ra giao diện người dùng và các chức năng tương tác. Điều quan trọng nhất là bạn cần làm quen với các khái niệm cốt lõi của WordPress, như các hook (cơ chế kết nối các hàm với nhau), vòng lặp (The Loop), và cấu trúc phân cấp của các template (mẫu thiết kế trang web).

Làm thế nào để gỡ lỗi plugin WordPress đang phát triển?

Được khuyến nghị nên bật chế độ gỡ lỗi (debug mode) của WordPress trong môi trường phát triển cục bộ. wp-config.php tệp, đặt giá trị của hằng số WP_DEBUG Hằng số được thiết lập trueBạn cũng có thể cài đặt các tiện ích mở rộng (plugin) để giám sát các thao tác truy vấn cơ sở dữ liệu (như Query Monitor), theo dõi quá trình thực thi các lệnh hook và việc tải các script. Những tiện ích này rất hữu ích cho việc tối ưu hóa hiệu năng và kiểm tra logic của hệ thống.

Làm thế nào để plugin của tôi hỗ trợ việc dịch thuật (quốc tế hóa)?

WordPress sử dụng framework GNU gettext để hỗ trợ việc đa ngôn ngữ hóa (internationalization). Bạn cần định nghĩa các thông tin liên quan đến ngôn ngữ cần hỗ trợ ngay ở đầu tệp chính (main file) của plugin của mình. Text DomainDomain PathTrong mã nguồn, hãy sử dụng… __()_e() Các hàm như `str_replace` và `str_replace_all` được sử dụng để thay thế tất cả các chuỗi cần được dịch. Sau đó, các công cụ như Poedit được dùng để tạo ra bản dịch cuối cùng. .pot tệp mẫu, để người dịch tạo .po.mo Tệp.

Làm thế nào để đăng ký plugin của tôi một cách an toàn vào danh mục plugin chính thức của WordPress?

Trước tiên, bạn cần tạo một tài khoản trên WordPress.org và nộp đơn đăng ký plugin của mình. Mã nguồn của plugin phải tuân thủ các tiêu chuẩn lập trình của WordPress, và không được chứa bất kỳ đoạn mã được mã hóa hay bị đảo lộn (obfuscated code) nào. Thư mục chứa các file của plugin, tệp chính (main file), hình ảnh minh họa (screenshot) và tệp README đều phải được sắp xếp theo cấu trúc nhất định. Nhóm kiểm duyệt sẽ đánh giá chất lượng mã nguồn, mức độ bảo mật và điều khoản cấp phép (phải tương thích với GPL).