WordPress là một hệ thống quản lý nội dung (content management system – CMS) miễn phí, mã nguồn mở. Và phần tốt nhất của WordPress là khá dễ mở rộng. Nhờ các plugin, bạn có thể mở rộng thêm nhiều chức năng hơn so với ban đầu. Các plugin cho phép bạn thêm các chức năng bổ sung như SEO, eCommerce, bảo mật,…
Và hôm nay, mình muốn hướng dẫn các bạn tạo một plugin WordPress đơn giản. Nếu bạn phát triển một plugin của riêng bản thân mình, thì hãy bắt đầu thôi!
Kiến thức cơ bản
Trước khi bắt đầu, bạn hãy đảm bảo rằng mình có kiến thức về PHP. Điều này sẽ giúp ích rất nhiều nếu bạn có kế hoạch viết nhiều plugin hơn trong tương lai.
Ngoài ra, bạn còn cần phải có thêm kiến thức về CSS và JS. Thêm vào đó bạn cần phải làm quen với các tiêu chuẩn lập trình của WordPress.
Hãy yên tâm, đó là một đoạn đường dài. Hôm nay chúng ta không tham gia vào những thứ phức tạp đó. Mình sẽ chỉ cho bạn cách viết một plugin đơn giản và chia sẻ một số công cụ và tài nguyên sẽ giúp công việc của bạn trở nên dễ dàng.
Cách để viết một plugin cơ bản
Mỗi plugin WordPress đều có những file chính mà bạn phải tạo một cách thủ công. Tuy nhiên để tiết kiệm thời gian, mình sẽ hướng dẫn bạn tạo một thư mục plugin một cách tự động bằng Pluginplate.
Tạo plugin WordPress với Pluginplate
Đầu tiên, hãy truy cập vào Pluginplate, vào nhấp vào nút “Create Your Plugin”.
Tiếp theo hãy điền thông tin plugin của bạn như hình bên dưới. Về phía cuối trang, bạn sẽ thấy phần “Modules” cho phép bạn thêm các tính năng bổ sung vào plugin của mình. Sau đó nhấn nút “Generate Plugin”.
Sau đó nhấn vào nút “Download” để tải về máy tính của bạn.
Bây giờ, chúng ta đã có tất cả các file cơ bản, bao gồm cả file chính. Việc tiếp theo là chúng ta phải thêm code để thực thi các chức năng khi plugin được kích hoạt. Dựa trên ví dụ của mình, file chính của plugin mình là hocwordpress.php. Đây là file mà mình sẽ chỉnh sửa ở phần tiếp theo.
Thêm chức năng cho plugin
Đầu tiên, hãy giải nén thư mục mà bạn đã tải về máy tính từ Pluginplate. Bên trong thư mục bạn sẽ thấy file chính, file chính của plugin mình là hocwordpress.php.
Bên trong thư mục plugin, bạn có thể thấy một loạt các file khác nhưng chúng ta không cần những file đó vào lúc này.
Bây giờ mình sẽ mở file hocwordpress.php lên.
<?php /** * hocwordpress * * @package HOCWORDPRE * @author Huy Kira * @license gplv2 * @version 1.0.0 * * @wordpress-plugin * Plugin Name: hocwordpress * Plugin URI: https://hocwordpress.vn/ * Description: This is some demo short description... * Version: 1.0.0 * Author: Huy Kira * Author URI: huykira@gmail.com * Text Domain: hocwordpress * Domain Path: /languages * License: GPLv2 * License URI: https://www.gnu.org/licenses/gpl-2.0.html * * You should have received a copy of the GNU General Public License * along with hocwordpress. If not, see . */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) exit; /** * HELPER COMMENT START * * This file contains the main information about the plugin. * It is used to register all components necessary to run the plugin. * * The comment above contains all information about the plugin * that are used by WordPress to differenciate the plugin and register it properly. * It also contains further PHPDocs parameter for a better documentation * * The function HOCWORDPRE() is the main function that you will be able to * use throughout your plugin to extend the logic. Further information * about that is available within the sub classes. * * HELPER COMMENT END */ // Plugin name define( 'HOCWORDPRE_NAME', 'hocwordpress' ); // Plugin version define( 'HOCWORDPRE_VERSION', '1.0.0' ); // Plugin Root File define( 'HOCWORDPRE_PLUGIN_FILE', __FILE__ ); // Plugin base define( 'HOCWORDPRE_PLUGIN_BASE', plugin_basename( HOCWORDPRE_PLUGIN_FILE ) ); // Plugin Folder Path define( 'HOCWORDPRE_PLUGIN_DIR', plugin_dir_path( HOCWORDPRE_PLUGIN_FILE ) ); // Plugin Folder URL define( 'HOCWORDPRE_PLUGIN_URL', plugin_dir_url( HOCWORDPRE_PLUGIN_FILE ) ); /** * Load the main class for the core functionality */ require_once HOCWORDPRE_PLUGIN_DIR . 'core/class-hocwordpress.php'; /** * The main function to load the only instance * of our master class. * * @author Huy Kira * @since 1.0.0 * @return object|Hocwordpress */ function HOCWORDPRE() { return Hocwordpress::instance(); } HOCWORDPRE();
Đoạn code trên sẽ cho WordPress biết tên của plugin cũng như phiên bản, tác giả, giấy phép và các chi tiết khác.
Ngay bên dưới đoạn code trên, hay thêm đoạn code sau:
// Register Custom Post Type function custom_post_type() { $labels = array( 'name' => _x( 'Khoá học', 'Post Type General Name', 'hocwordpress' ), 'singular_name' => _x( 'Khoá học', 'Post Type Singular Name', 'hocwordpress' ), 'menu_name' => __( 'Khoá học', 'hocwordpress' ), 'name_admin_bar' => __( 'Khoá học', 'hocwordpress' ), 'archives' => __( 'Item Archives', 'hocwordpress' ), 'attributes' => __( 'Item Attributes', 'hocwordpress' ), 'parent_item_colon' => __( 'Parent Item:', 'hocwordpress' ), 'all_items' => __( 'Tất cả khoá học', 'hocwordpress' ), 'add_new_item' => __( 'Thêm khoá học', 'hocwordpress' ), 'add_new' => __( 'Add New', 'hocwordpress' ), 'new_item' => __( 'New Item', 'hocwordpress' ), 'edit_item' => __( 'Edit Item', 'hocwordpress' ), 'update_item' => __( 'Update Item', 'hocwordpress' ), 'view_item' => __( 'View Item', 'hocwordpress' ), 'view_items' => __( 'View Items', 'hocwordpress' ), 'search_items' => __( 'Search Item', 'hocwordpress' ), 'not_found' => __( 'Not found', 'hocwordpress' ), 'not_found_in_trash' => __( 'Not found in Trash', 'hocwordpress' ), 'featured_image' => __( 'Featured Image', 'hocwordpress' ), 'set_featured_image' => __( 'Set featured image', 'hocwordpress' ), 'remove_featured_image' => __( 'Remove featured image', 'hocwordpress' ), 'use_featured_image' => __( 'Use as featured image', 'hocwordpress' ), 'insert_into_item' => __( 'Insert into item', 'hocwordpress' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'hocwordpress' ), 'items_list' => __( 'Items list', 'hocwordpress' ), 'items_list_navigation' => __( 'Items list navigation', 'hocwordpress' ), 'filter_items_list' => __( 'Filter items list', 'hocwordpress' ), ); $args = array( 'label' => __( 'Khoá học', 'hocwordpress' ), 'description' => __( 'Quản lý khoá học', 'hocwordpress' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'thumbnail', 'comments', 'revisions' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'menu_icon' => 'dashicons-welcome-learn-more', 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'khoa_hoc', $args ); } add_action( 'init', 'custom_post_type', 0 );
Đoạn code trên chỉ đơn giản là tạo một custom post type có tên “Khoá học”. Và post type này sẽ hỗ trợ các tính năng như trích dẫn, ảnh đại diện, bình luận, custom field… Đây là những tính năng bạn sẽ thấy bên trong trình chỉnh sửa bài đăng khi thêm một khoá học mới.
Cài đặt plugin lên trang WordPress của bạn
Lưu tất cả thay đổi của bạn. Sau đó nén thư mục plugin của bạn thành một file có đuôi .ZIP. Tiếp theo truy cập vào trang WordPress của bạn và cài đặt nó như các plugin khác.
Bây giờ, nếu bạn kiểm tra menu quản trị WordPress, bạn sẽ thấy post type mới là “Khoá học”.
Chúc mừng bạn đã tạo thành công một plugin WordPress đầu tiên cho riêng mình! Ngoài ra, bạn có thể tự nghiên cứu code của các plugin khác (tất cả các plugin WordPress đều là mã nguồn mở).
Ngoài ra, hãy đọc tài liệu Plugin Handbook của WordPress. Tài liệu này sẽ chứa tất cả những gì bạn cần liên quan đến việc tạo plugin WordPress.
Lời kết
Lập trình plugin WordPress thoạt đầu có vẻ đáng sợ, đặc biệt là khi mới bắt đầu. Nhưng với các công cụ phù hợp và một số tài nguyên học tập, bạn có thể phát triển các plugin ngay lập tức. Chỉ cần kiến thức lập trình cơ bản và quyết tâm, bạn đã đi được nửa chặng đường.
Mình hy vọng bài viết này sẽ đóng vai trò như một bước đệm để bạn phát triển các plugin WordPress phức tạp hơn trong tương lai. Hãy xem các tài liệu mà mình đã đề xuất ở trên để nâng cao kiến thức của bạn về phát triển plugin WordPress nhé.
Nếu các bạn thấy hay có thể theo dõi chuyên mục Thủ thuật WordPress và follow fanpage để biết thêm nhiều kiến thức mới nha.