Nếu bạn muốn tạo thêm table trong cơ sở dữ liệu của WordPress thì bạn phải làm theo nguyên tắc. Bài viết này sẽ hướng dẫn cho các bạn cách thêm 1 table bất kỳ vào cơ sở dữ liệu của WordPress. Nếu như bạn dùng cho plugin thì bạn nên đặt vào hook activation của WordPress nhé.
global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $max_index_length = 191; $table = $wpdb->prefix . 'hocwpmeta'; $wpdb->hocwpmeta = $table; $sql = "CREATE TABLE IF NOT EXISTS $table (meta_id bigint(20) unsigned NOT NULL auto_increment, "; $sql .= "hocwp_id bigint(20) unsigned NOT NULL default '0', meta_key varchar(255) default NULL, "; $sql .= "meta_value longtext, object_type varchar(20) default 'post', "; $sql .= "PRIMARY KEY (meta_id), KEY hocwp_id (hocwp_id), "; $sql .= "KEY meta_key (meta_key($max_index_length))) $charset_collate;"; if ( ! function_exists( 'dbDelta' ) ) { require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); } dbDelta( $sql );
Như các bạn thấy. Trong ví dụ bên trên mình tạo thêm table có tên là hocwpmeta. Nghĩa là sau khi thêm table prefix thì sẽ có dạng wp_hocwpmeta. Thay vì sử dụng hàm PHP bình thường để truy vấn thì bạn phải dùng hàm dbDelta để tạo table.
Cách đúng nhất để tạo thêm table cho WordPress
Biến toàn cục $wpdb
là để bạn tương tác với cơ sở dữ liệu. Bạn có thể dùng biến này để tạo bảng, truy xuất dữ liệu. Mọi thao tác trực tiếp với cơ sở dữ liệu bạn nên dùng biến $wpdb
để thực hiện.
// 1st Method - Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP object global $wpdb; $results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}options WHERE option_id = 1", OBJECT ); // 2nd Method - Utilizing the $GLOBALS superglobal. Does not require global keyword ( but may not be best practice ) $results = $GLOBALS['wpdb']->get_results( "SELECT * FROM {$wpdb->prefix}options WHERE option_id = 1", OBJECT );
Bên trên là một ví dụ trường hợp các bạn sử dụng class wpdb để truy vấn dữ liệu. Ngoài các hàm hỗ trợ truy vấn có sẵn của WordPress. Nếu bạn muốn truy vấn bằng câu lệnh MySQL thì các bạn nên làm như ví dụ bên trên để đảm bảo tính dễ sử dụng, tính đồng bộ và tính an toàn cho trang web của bạn. Chúc bạn thành công.
Gỡ bỏ option và table khi xóa plugin
Nếu bạn tạo plugin có thêm table cho WordPress. Khi ngừng kích hoạt hoặc xóa plugin thì bạn nên viết code gỡ bỏ table của bạn đi.
register_uninstall_hook( __FILE__, 'hocwp_on_plugin_deactivation' ); function hocwp_on_plugin_deactivation() { if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) { die; } $option_name = 'hocwp_option'; // For single site option delete_option( $option_name ); // For multisite option delete_site_option( $option_name ); // Drop table from database global $wpdb; $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}hocwpmeta" ); }
Hàm bên trên sẽ gỡ bỏ option và xóa table ra khỏi cơ sở dữ liệu khi người dùng xóa plugin. Bạn có thể tham khảo thêm Activation / Deactivation Hooks và Uninstall Methods trên trang chủ của WordPress nhé. Chúc bạn thành công.
Bác cho luôn code xóa tab khi mình xóa plugin đó đi được không?
Mình đã cập nhật code trong bài viết rồi nhé. Chúc vui vẻ.
Cái tạo page rederect link này : https://hocwp.net/?goto=https://developer.wordpress.org/plugins/the-basics/activation-deactivation-hooks/
đặt quảng cáo không sợ bị baned hả bác Cường.
Sao lại bị ban bạn? Trong TOS của GA có cái này hả?
Thì ko đặt quảng cáo trên trang ít nội dung, ở đây có dòng chữ mà 2 cái quảng cáo lận bác…e định làm như bác mà sợ baned cái tài khoản
Mình để cũng hơn 2 tháng rồi, không thấy bị gì. Nếu bạn sợ ban thì bạn cho thêm hiển thị bài viết vào.
em mới nhận web muốn tạo 1 cái bảng cho web mà không biết chèn code vào chỗ nào có bác nào chỉ em với. Plugin em không thích dùng ạ
có abcs nào cho em xin code bảng giá cước với