- Hướng dẫn viết một WordPress Plugin cơ bản
- LBK Count View Plugin
- LBK Fixed Contact Plugin
- Plugin LBK FAQs Schema
- LBK Sticky Adsense Plugin
Hướng dẫn viết WordPress Plugin cơ bản
WordPress Plugin là tập lệnh PHP mở rộng chức năng của trang web. Nó có thể dễ dàng tải xuống và cài đặt lên WordPress Site.
Bạn có thể tạo những plugin của riêng mình và sử dụng chúng.
Tất cả những plugin được quản lý trong thư mục /wp-content/plugins/
Sau đây, mình sẽ hướng dẫn các bạn tạo 1 plugin wordpress đơn giản có kết hợp cơ sở dữ liệu
1. Tạo thư mục và tập tin
Tạo một thư mục mới lbk-plugin
vào /wp-content/plugins/
Trong đó:
- lbk-plugin.php – Tệp xác định chi tiết plugin, tạo bảng MySQL mới, kích hoạt plugin, menu page và menu con (submenu)
- addentry.php – Thêm bản ghi mới vào CSDL
- displaylist.php – Hiển thị danh sách các bản ghi
2. lbk-plugin.php
Chỉ định tên Plugin, link Plugin, mô tả (Description), Tác giả, v..v… trong /** */
/** * @link https://lbk.vn * @since 1.0.0 * @package LBK_Plugin * * @wordpress-plugin * Plugin Name: LBK Plugin * Plugin URI: https://lbk.vn/lbk-plugin * Description: Simple Plugin * Author: Briki LBK * Author URI: https://lbk.vn/ * Version: 1.0.0 * License: GPL-2.0+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt * Text Domain: lbk-plugin */
2.1. Tạo bảng CSDL
// Create a new table function lbk_plugin_table_db() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $table_name = $wpdb->prefix . 'lbk_plugin'; $sql = "CREATE TABLE $table_name ( id mediumint(11) NOT NULL AUTO_INCREMENT, name varchar(80) NOT NULL, username varchar(80) NOT NULL, email varchar(80) NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta( $sql ); } register_activation_hook( __FILE__, 'lbk_plugin_table_db' );
2.2. Thêm Menu và Submenu
Tạo 1 function lbkplugin_menu()
.
Để thêm menu và submenu, chúng ta sử dụng function add_menu_page()
và add_submenu_page()
Chúng ta tạo 1 Menu LBK Plugin
và 2 Submenu All Entries
và Add New Entry
function lbkplugin_menu() { add_menu_page( 'LBK Plugin', 'LBK Plugin', 'manage_options', 'lbk-plugin', 'displayList', plugins_url('/lbk-plugin/img/icon.png') ); add_submenu_page( 'lbk-plugin', 'All Entries', 'All Entries', 'manage_options', 'allentries', 'displayList' ); add_submenu_page( 'lbk-plugin', 'Add New Entry', 'Add New Entry', 'manage_options', 'addnewentry', 'addEntry' ); } add_action( 'admin_menu', 'lbkplugin_menu' ); function displayList() { include 'displaylist.php'; } function addEntry() { include 'addentry.php'; }
3. displaylist.php
Lấy dữ liệu từ bảng lbk_plugin
. Trong mỗi thẻ <tr> tạo 1 link Delete ?page=allentries&delid='.$id.'
Khi click vào DELETE, thực hiện truy vấn trên $_GET['delid']
<?php global $wpdb; $tablename = $wpdb->prefix.'lbk_plugin'; // Delete record if ( isset( $_GET['delid'] ) ) { $delid = $_GET['deild']; $wpdb->query( 'DELETE FROM ' . $tablename . ' WHERE id = ' . $delid ); } ?> <h1>All Entries</h1> <table width = '100%' border = '1' style = 'border-collapse: collapse;'> <thead> <tr> <th>S.no</th> <th>Name</th> <th>Username</th> <th>Email</th> <th> </th> </tr> </thead> <tbody> <?php //Select records $entriesList = $wpdb->get_results( 'SELECT * FROM ' . $tablename . ' order by id desc' ); if( count($entriesList) > 0 ) { $count = 1; foreach( $entriesList as $entry ) { $id = $entry->id; $name = $entry->name; $uname = $entry->username; $email = $entry->email; echo '<tr> <td>' . $count . ' </td> <td>' . $name . ' </td> <td>' . $uname . ' </td> <td>' . $email . ' </td> <td><a href="?page=allentries&delid=' . $id . '">Delete</a></td> </tr>'; $count++; } } else { echo '<tr><td colspan='5'>No record found</td></tr>'; } ?> </tbody> </table>
4. addentry.php
Tạo 1 form với 3 input và submit button
Form này đọc dữ liệu và thực chèn câu truy vấn
<?php global $wpdb; // Add record if( isset( $_POST['but_submit'] ) ){ $name = $_POST['txt_name']; $uname = $_POST['txt_uname']; $email = $_POST['txt_email']; $tablename = $wpdb->prefix."lbk_lugin"; if( $name != '' && $uname != '' && $email != '' ) { $check_data = $wpdb->get_results( "SELECT * FROM ".$tablename." WHERE username='".$uname."' " ); if( count( $check_data ) == 0 ){ $insert_sql = "INSERT INTO " . $tablename . "( name, username, email ) values( '" . $name . "','" . $uname . "','" . $email . "' )"; $wpdb->query( $insert_sql ); echo "Save sucessfully."; } } } ?> <h1>Add New Entry</h1> <form method='post' action=''> <table> <tr> <td>Name</td> <td><input type='text' name='txt_name'></td> </tr> <tr> <td>Username</td> <td><input type='text' name='txt_uname'></td> </tr> <tr> <td>Email</td> <td><input type='text' name='txt_email'></td> </tr> <tr> <td> </td> <td><input type='submit' name='but_submit' value='Submit'></td> </tr> </table> </form>