Bảng wordpress

Ở bài trước mình đã giới thiệu cho các bạn cấu trúc database wordpress và cũng đã biết database wordpress mặc định có tổng cộng là 12 bảng. Vậy chúng ta có thể tạo thêm vài bảng nữa được không?

  • Hướng dẫn thêm, sửa, xóa trong cơ sở dữ liệu wordpress
  • Hướng dẫn truy vấn dữ liệu cơ sở dữ liệu wordpress, truy vấn SQL trong wordpress
  • Đâm, đục, phá database wordpress xem có gì vui ?
  • Thực hiện truy vấn cơ sở dữ liệu wordpress sử dụng wpdb
  • Hướng dẫn xây dựng trang đăng ký trong WordPress

Bảng wordpress
Bảng wordpress

Cơ sở dữ liệu mặc định của wordpress có 12 bảng

Tạo bảng mới trong cơ sở dữ liệu wordpress

Ví dụ yêu cầu. Tạo một bảng mới trong cơ sở dữ liệu wordpress để lưu thông tin liên hệ của khách hàng. Thông tin liên hệ khách hàng bao gồm. Họ và tên, email, số điện thoại, địa chỉ, tiêu đề và nội dung liên hệ .

Với yêu cầu phía trên mình sẽ tạo một bảng mới có tên là. wp_liên hệ. Và trong bảng này sẽ có các trường tương ứng. ID, tên, email, điện thoại, địa chỉ, tiêu đề, nội dung, ngày tháng

Để tạo bảng mới trong cơ sở dữ liệu wordpress, các bạn chèn đoạn mã sau vào tệp functions. php of theme are used nhé

PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

    hàm hk_CreatDatabaseContacts(){

        toàn cầu $wpdb;

        $charsetCollate = $wpdb - >get_charset_collate();

        $contactTable = $wpdb - >prefix . 'liên hệ';

        $createContactTable = "TẠO BẢNG NẾU KHÔNG TỒN TẠI `{$contactTable}` (

`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,

`tên` varchar(255) KHÔNG NULL,

`email` varchar(255) NOT NULL,

`điện thoại` varchar(20) NULL,

`địa chỉ` varchar(255) NULL,

`nội dung` văn bản dài NULL,

dấu thời gian `date` KHÔNG NULL,

KHÓA CHÍNH (`id`)

        ) {$charsetCollate};";

        require_once( ABSPATH . 'wp-admin/gồm/nâng cấp. php' );

        dbDelta( $createContactTable );

    }

 

    add_action('init', 'hk_CreatDatabaseContacts');

?>

Giải thích mã tạo cơ sở dữ liệu mới trong wordpress

Chúng ta tạo một hàm có tên là hk_CreatDatabaseContacts (bạn có thể đặt tên hàm tùy thích nhé). Sau đó móc hàm gắn vào action ‘init‘ để mỗi khi tải trang web là nó tự động chạy hàm đó. Sau đây là một số thành phần có trong chức năng tạo cơ sở dữ liệu

  • Dòng 3. global $wpdb => Lớp $wpdb là lớp dùng để tương tác với cơ sở dữ liệu trong wordpress ( nói chung là cái này wordpress cung cấp sẵn cho mình dùng 😀 )
  • Dòng 4. Nhận bộ ký tự của cơ sở dữ liệu sau đó gán vào biến $charsetCollate, để tạo bảng mới cùng bộ ký tự tổng hợp của cơ sở dữ liệu
  • Dòng 5. Set a variable $contactTable as name of the table to create. $wpdb->prefix => Lấy tiền tố của cơ sở dữ liệu, mặt định của cơ sở dữ liệu là wp_
  • Từ dòng 6 đến dòng 15. Tạo biến $createContactTable là câu sql kiểm tra trong cơ sở dữ liệu có bảng nào chưa, nếu chưa có thì tiến hành tạo bảng mới. Với trường id là khóa chính, tự động tăng
  • Dòng 15. Bao gồm tệp hệ thống của wp, tệp này chứa nhiều thư viện giúp bạn tạo cơ sở dữ liệu. (Bạn cứ cho vào ko cần quan tâm nhé)
  • Dòng 16. Sử dụng hàm dbDelta với biến $createContactTable được khai báo ở trên

View results

Sau khi chèn đoạn có trên, bạn ra ngoài trang web và tiến hành tải lại trang và vào phpmyadmin xem kết quả, nếu bảng wp_contacts xuất hiện có nghĩa đoạn mã trên đã chạy

Bảng wordpress
Bảng wordpress

Bảng wp_contacs đã được tạo trong cơ sở dữ liệu của dự án

Bảng wordpress
Bảng wordpress

Đây là phần thiết kế của bảng vừa tạo

Tạo bảng mới trong cơ sở dữ liệu wordpress với từ khóa ngoại

Các bạn chèn đoạn mã sau vào hàm tệp. php of theme are used nhé

PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

function hk_CreatDatabaseContacts(){

    toàn cầu $wpdb;

    $charsetCollate = $wpdb - >get_charset_collate();

    $contactTable = $wpdb - >prefix . 'liên hệ';

    $createContactTable = "TẠO BẢNG NẾU KHÔNG TỒN TẠI `{$contactTable}` (

`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,

`user_id` bigint(20) UNSIGNED NOT NULL,

`tên` varchar(255) KHÔNG NULL,

`email` varchar(255) NOT NULL,

`điện thoại` varchar(20) NULL,

`địa chỉ` varchar(255) NULL,

`nội dung` văn bản dài NULL,

dấu thời gian `date` KHÔNG NULL,

KHÓA CHÍNH (`id`),

KHÓA NGOÀI (user_id) THAM KHẢO {$wpdb->prefix}user(ID) TRÊN XÓA CASCADE TRÊN CẬP NHẬT CASCADE

    ) {$charsetCollate};";

    require_once( ABSPATH . 'wp-admin/gồm/nâng cấp. php' );

    dbDelta( $createContactTable );

}

 

add_action('init', 'hk_CreatDatabaseContacts');

?>

Ở đây user_id là khóa ngoại, Liên kết bảng wp_contacts với bảng wp_users nha

mysql

1

Khóa NGOẠI TỆ (user_id) Tham chiếu THAM KHẢO {$wpdb- >prefix}users(ID) ON DELETE CASCADE ON UPDATE CASCADE

Đoạn mã trên cho phép tạo khóa ngoại trừ là user_id đồng thời bị ràng buộc khi xóa người dùng A, thì những bản ghi trong bảng wp_contacs có chứa user_id của người dùng A cũng bị xóa theo luôn nhé

Delete a table in database wordpress

Để xóa một bảng trong cơ sở dữ liệu wordpress, bạn sử dụng đoạn mã sau khi chèn vào chức năng tệp. php of theme are used

PHP

1

2

3

4

    toàn cầu $wpdb;

    $wpdb - >truy vấn( "DROP TABLE IF EXISTS {$wpdb->prefix}contacts" );

?>

Một số lưu ý

Khi các bạn tạo bảng mới trong database wordpress thì nên chạy 1 lần, tránh hàm tạo database vào action init. Vì action init mỗi lần load web nó sẽ chạy, vì thế action init chạy rất nhiều lần dễ gây lỗi và làm chậm website

Các bạn chỉ nên chạy khi active theme hoặc active plugin

Tạo cơ sở dữ liệu khi chủ đề đang hoạt động

PHP

1

add_action( 'after_switch_theme', 'hk_CreatDatabaseContacts' );

Tạo cơ sở dữ liệu khi kích hoạt plugin

PHP

1

2

3

4

chức năng detect_plugin_activation( $plugin, $network_activation ) {

    // Đoạn mã tạo cơ sở dữ liệu

}

add_action( 'activated_plugin', 'detect_plugin_activation', 10, 2 );

Tóm tắt

Bài viết này mình đã hướng dẫn các bạn cách tạo bảng mới trong cơ sở dữ liệu của worpdress. Nhìn chung thì cũng khá đơn giản, chỉ cần copy đoạn code của mình chỉnh sửa các thông số cho phù hợp là oke. Ở bài viết tiếp theo mình sẽ hướng dẫn các bạn truy vấn, thêm, xóa, sửa dữ liệu trong bảng của cơ sở dữ liệu wordress bằng cậu lệnh truy vấn mysql