Làm cách nào để sử dụng Wpdb trong WordPress?

Ngoài hộp, WordPress cung cấp rất nhiều chức năng có thể được sử dụng để tương tác với cơ sở dữ liệu. Trong hầu hết các trường hợp, lớp

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
9 và các hàm liên quan như
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
0,
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
1,
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
2 sẽ đủ để hoàn thành công việc. Tuy nhiên, sẽ có lúc chúng tôi bắt buộc phải làm điều gì đó mà WordPress không cung cấp nguyên bản, đặc biệt là khi chúng tôi cần xử lý các bảng tùy chỉnh

Trong hướng dẫn này, chúng ta sẽ xem qua lớp quan trọng nhất để xử lý cơ sở dữ liệu trong WordPress –

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3, bao gồm một số mẹo và thủ thuật có thể được triển khai trong quy trình phát triển của chúng ta sau này. Chúng tôi cũng sẽ chạm vào
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
4 có thể được sử dụng để tạo các bảng tùy chỉnh trong plugin của chúng tôi. Chúng tôi sẽ không đề cập đến những kiến ​​thức cơ bản về cách tạo cơ sở dữ liệu WordPress ban đầu của bạn trong hướng dẫn này, nhưng vui lòng xem hướng dẫn này về cách tạo cơ sở dữ liệu từ cPanel

Làm việc với lớp
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3 có lẽ là lớp quan trọng nhất mà chúng ta sử dụng khi cần xử lý trực tiếp cơ sở dữ liệu. Nó dựa trên lớp
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
7 được viết bởi Justin Vincent, được điều chỉnh để hoạt động với WordPress

Các phương thức và thuộc tính cơ bản của lớp

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3 đã được giải thích rõ ràng trên trang WordPress Codex nên không cần phải nhắc lại chúng ở đây. Thay vào đó, chúng tôi sẽ điểm qua một số lỗi phổ biến mà các nhà phát triển WordPress có thể mắc phải, cách khắc phục chúng cũng như các phương pháp hay nhất có thể áp dụng khi sử dụng lớp
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3

Không mã hóa tên bảng vào truy vấn SQL

Một số nhà phát triển đưa ra giả định chung rằng tiền tố bảng sẽ không thay đổi và sử dụng giá trị mặc định là

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
10. Một ví dụ cơ bản về cách sai để làm điều này được minh họa trong đoạn mã dưới đây

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
2

Tất nhiên, đây là sự đơn giản hóa quá mức về những gì một plugin sẽ thực sự làm, nhưng ví dụ này cho thấy mọi thứ có thể sai nhanh như thế nào. Điều gì sẽ xảy ra nếu người dùng của chúng tôi thay đổi tiền tố bảng thành thứ khác?

Mã trên có thể được thực hiện di động bằng cách áp dụng các thay đổi như dưới đây

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];

Thậm chí tốt hơn, nếu bạn đang xử lý các bảng mặc định của WordPress, bạn có thể bỏ qua phần tiền tố và thay vào đó, hãy trực tiếp giải quyết chúng dưới dạng các thuộc tính trong

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3. Mỗi bảng WordPress mặc định được đại diện bởi một thuộc tính tùy chỉnh trong lớp
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3 có cùng tên bảng mà không có tiền tố

Ví dụ: giả sử rằng tiền tố của bảng là

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
10

  • global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    16 sẽ tương ứng với bảng
    global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    17
  • global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    18 sẽ tương ứng với bảng
    global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    19
  • global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    30 sẽ tương ứng với bảng
    global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    31

Và như thế. Đoạn mã trên có thể được cải thiện hơn nữa, vì chúng tôi đang truy vấn bảng bài đăng bằng cách thực hiện theo cách này thay thế

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];

Sử dụng các phương thức trợ giúp cụ thể cho hoạt động cơ sở dữ liệu

Mặc dù phương thức

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
32 được thiết kế để xử lý bất kỳ truy vấn SQL nào, nhưng tốt hơn là sử dụng các phương thức trợ giúp phù hợp hơn. Điều này thường được cung cấp bởi các phương pháp như
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
33,
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
34,
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
35 và các phương pháp khác. Bên cạnh đó, nó cụ thể hơn cho các trường hợp sử dụng của chúng tôi, nó cũng an toàn hơn khi việc thoát hiểm và các công việc lặt vặt khác được xử lý

Hãy xem ví dụ này

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
1

Ngoài bản chất không an toàn của đoạn mã này, nó sẽ chạy tốt với các giá trị phù hợp. Tuy nhiên, đoạn mã này có thể được cải thiện hơn nữa bằng cách sử dụng phương pháp

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
33 thay thế. Đoạn mã trên có thể được thay đổi để trông giống như sau

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3

Nếu chúng tôi không cung cấp định dạng dưới dạng tham số thứ ba cho phương thức

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
33, tất cả dữ liệu được cung cấp trong tham số thứ hai sẽ được thoát dưới dạng chuỗi. Ngoài ra, chúng ta có thể dễ dàng biết mã này làm gì trong nháy mắt, vì tên phương thức rõ ràng hơn

Truy vấn cơ sở dữ liệu gỡ lỗi đúng cách

Theo mặc định, báo cáo lỗi bị tắt. Tuy nhiên,

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3 cung cấp hai phương pháp có thể được sử dụng để chuyển đổi trạng thái báo cáo lỗi

Để bật tính năng báo lỗi, chỉ cần chạy mã này

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
5

Và để tắt nó đi

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
6

Một điều khác cần lưu ý là nếu chúng ta đặt cả

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
39 và
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
50 thành
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
51, thì phương thức
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
52 sẽ tự động được gọi. Có một phương pháp hữu ích khác có thể được sử dụng để xử lý lỗi, đó là
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
53

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
2

Như tên gợi ý, nó sẽ chỉ hiển thị lỗi cho truy vấn gần đây nhất, bất kể trạng thái báo cáo lỗi

Một thủ thuật thú vị khác là bật

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
54 trong
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
55. Điều này sẽ lưu trữ tất cả các truy vấn cơ sở dữ liệu đã chạy, thời gian thực hiện và nơi nó được gọi ban đầu vào một thuộc tính có tên là
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
56 trong lớp
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3

Để lấy dữ liệu này, chúng ta có thể làm như sau

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
7

Lưu ý rằng điều này sẽ có tác động đến hiệu suất trên trang web của chúng tôi, vì vậy chỉ sử dụng nó khi cần thiết

Hầu hết thời gian, các chức năng này sẽ đủ để gỡ lỗi những gì đang xảy ra với mã của chúng tôi. Tuy nhiên, để gỡ lỗi và báo cáo rộng rãi hơn, luôn có plugin Trình theo dõi truy vấn có thể giúp gỡ lỗi nhiều hơn các truy vấn cơ sở dữ liệu

Bảo mật truy vấn chống lại các cuộc tấn công tiềm năng

Để bảo mật hoàn toàn mã của chúng ta khỏi SQL injection,

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3 cũng cung cấp một phương thức hữu ích khác có tên là
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
59 sẽ lấy một chuỗi câu lệnh SQL và dữ liệu cần thoát. Điều này có liên quan bất cứ khi nào chúng tôi xử lý các phương pháp như
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
32 hoặc
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
61

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
2

Phương thức

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
59 hỗ trợ cả cú pháp của
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
63 và
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
64. Tham số đầu tiên,
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
65 là một câu lệnh SQL chứa đầy các phần giữ chỗ. Các trình giữ chỗ này có thể tồn tại ở ba định dạng khác nhau

  • global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    66 cho chuỗi
  • global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    67 cho số nguyên
  • global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    68 cho phao

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
69 có thể là một chuỗi tham số cho cú pháp giống như
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
63 hoặc một mảng tham số sẽ được sử dụng để thay thế trình giữ chỗ trong
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
65. Phương thức sẽ trả về SQL với dữ liệu được thoát đúng cách

Hãy xem cách chúng tôi có thể đạt được quy trình xóa

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
22 trong
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
19 cho một ID bài đăng cụ thể

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
0

Lưu ý rằng đây không phải là cách được đề xuất để xóa bản ghi trong cơ sở dữ liệu bằng cách sử dụng

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3. Đó là bởi vì chúng tôi đang để mã mở cho SQL injection, vì đầu vào của người dùng không được thoát đúng cách và được sử dụng trực tiếp trong câu lệnh
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
25

Tuy nhiên, điều này có thể dễ dàng khắc phục. Chúng tôi chỉ giới thiệu phương thức

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
59 trước khi thực hiện truy vấn thực tế để SQL được tạo an toàn khi sử dụng. Điều này có thể được minh họa trong đoạn trích dưới đây

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
1

Kết nối với cơ sở dữ liệu riêng biệt

Theo mặc định, biến

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
27 là một thể hiện của lớp
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3 kết nối với cơ sở dữ liệu WordPress được xác định trong
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
55. Nếu chúng ta muốn tương tác với các cơ sở dữ liệu khác, chúng ta có thể khởi tạo một thể hiện khác của lớp
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3. Điều này mang lại lợi ích to lớn cho chúng tôi, bởi vì các phương pháp như
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
33,
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
34 và
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
61 đều có sẵn

Lớp

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3 chấp nhận bốn tham số trong cấu trúc, đó là tên người dùng, mật khẩu, tên cơ sở dữ liệu và máy chủ cơ sở dữ liệu, theo thứ tự đó. Đây là một ví dụ

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
2

Nếu chúng ta đang sử dụng cùng tên người dùng, mật khẩu và máy chủ lưu trữ cơ sở dữ liệu, nhưng chỉ cần thay đổi cơ sở dữ liệu đã chọn, thì có một phương thức hữu ích có tên là

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
75 trên biến toàn cục
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
27. Điều này đạt được trong nội bộ bằng cách sử dụng hàm
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
77/
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
78

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
3

Điều này cũng đặc biệt hữu ích khi chúng ta muốn chuyển sang một cơ sở dữ liệu WordPress khác, nhưng vẫn muốn giữ lại chức năng của các chức năng như

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
79 và các chức năng khác

Sử dụng bảng cơ sở dữ liệu tùy chỉnh

Các bảng mặc định của WordPress thường đủ để xử lý hầu hết các hoạt động phức tạp. Bằng cách sử dụng các loại bài đăng tùy chỉnh với siêu dữ liệu bài đăng, phân loại tùy chỉnh và siêu dữ liệu thuật ngữ, chúng tôi có thể làm hầu hết mọi thứ mà không cần sử dụng bảng tùy chỉnh

Tuy nhiên, các bảng tùy chỉnh có thể hữu ích bất cứ khi nào chúng tôi muốn kiểm soát tốt hơn dữ liệu mà plugin của chúng tôi có thể xử lý. Lợi ích của việc sử dụng bảng tùy chỉnh bao gồm

  • Toàn quyền kiểm soát cấu trúc dữ liệu – Không phải tất cả các loại dữ liệu đều phù hợp với cấu trúc của
    global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    20, vì vậy khi chúng tôi muốn lưu trữ dữ liệu không có ý nghĩa gì dưới dạng loại bài đăng tùy chỉnh, bảng tùy chỉnh có thể là một lựa chọn tốt hơn
  • Phân tách các mối quan tâm – Vì dữ liệu của chúng tôi được lưu trữ trong một bảng tùy chỉnh, nên nó sẽ không can thiệp vào các bảng
    global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    17 hoặc
    global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    19 trái ngược với việc chúng tôi đang sử dụng các loại bài đăng tùy chỉnh. Việc di chuyển dữ liệu của chúng tôi sang nền tảng khác dễ dàng hơn vì nó không bị hạn chế đối với cách WordPress cấu trúc dữ liệu của nó
  • Hiệu quả – Truy vấn dữ liệu từ bảng cụ thể của chúng tôi chắc chắn sẽ nhanh hơn nhiều so với tìm kiếm trên bảng
    global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    17 cũng chứa dữ liệu không liên quan đến plugin của chúng tôi. Đây là một vấn đề rõ ràng khi sử dụng các loại bài đăng tùy chỉnh để lưu trữ nhiều siêu dữ liệu có thể làm phình to bảng
    global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    19

dbDelta để giải cứu

Thay vì sử dụng

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3 để tạo bảng cơ sở dữ liệu tùy chỉnh, bạn nên sử dụng dbDelta để xử lý tất cả việc tạo bảng ban đầu của mình, cũng như cập nhật lược đồ bảng. Nó đáng tin cậy, vì lõi WordPress cũng sử dụng chức năng này để xử lý mọi cập nhật lược đồ cơ sở dữ liệu từ phiên bản này sang phiên bản khác, nếu có

Để tạo một bảng tùy chỉnh ban đầu khi cài đặt plugin, chúng ta cần nối hàm của mình với hàm

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
26. Giả sử rằng tệp plugin chính của chúng tôi là
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
27 bên trong thư mục
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
28, chúng tôi có thể đặt dòng này trực tiếp vào đó

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
4

Tiếp theo, chúng ta cần tạo hàm

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
29 thực hiện việc tạo bảng thực tế khi kích hoạt plugin. Ví dụ: chúng ta có thể tạo một bảng tùy chỉnh có tên là
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
00 sẽ được sử dụng để lưu trữ dữ liệu khách hàng đơn giản như tên, họ và địa chỉ email của họ

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
5

Để tối đa hóa khả năng tương thích, chúng tôi truy xuất đối chiếu bộ ký tự cơ sở dữ liệu từ

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3. Ngoài ra, câu lệnh SQL cần tuân thủ một số quy tắc để đảm bảo nó hoạt động như dự kiến. Điều này được lấy trực tiếp từ trang Codex trên Tạo bảng bằng plugin

  • Bạn phải đặt mỗi trường trên một dòng riêng trong câu lệnh SQL của mình
  • Bạn phải có hai khoảng cách giữa các từ PRIMARY KEY và định nghĩa về khóa chính của bạn
  • Bạn phải sử dụng từ khóa KEY thay vì từ đồng nghĩa INDEX và bạn phải bao gồm ít nhất một KEY
  • Bạn không được sử dụng bất kỳ dấu nháy đơn hoặc dấu gạch ngược nào xung quanh tên trường
  • Các loại trường phải là chữ thường
  • Các từ khóa SQL, như CREATE TABLE và UPDATE, phải viết hoa
  • Bạn phải chỉ định độ dài của tất cả các trường chấp nhận tham số độ dài. int[11], ví dụ

Nói chung, bạn cũng nên lưu trữ phiên bản cơ sở dữ liệu vào bảng tùy chọn để chúng tôi có thể so sánh chúng trong quá trình cập nhật plugin trong trường hợp bảng tùy chỉnh của chúng tôi cần cập nhật. Để làm như vậy, chúng ta chỉ cần thêm dòng này ngay sau khi tạo bảng bằng hàm

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
4

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
6

Cập nhật lược đồ bảng

Sử dụng ví dụ tương tự như trên, giả sử trong quá trình phát triển, chúng tôi thay đổi ý định và chúng tôi cũng muốn lưu trữ số điện thoại của khách hàng trong bảng của mình. Những gì chúng tôi có thể làm là kích hoạt cập nhật lược đồ bảng trong quá trình cập nhật plugin của chúng tôi. Vì

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
26 sẽ không được kích hoạt trong quá trình cập nhật plugin, thay vào đó, chúng tôi có thể kết nối với hành động
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
04 để thực hiện kiểm tra phiên bản cơ sở dữ liệu và cập nhật lược đồ bảng nếu cần

Đầu tiên, chúng tôi thêm chức năng nâng cấp tùy chỉnh của mình vào móc

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
04

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
7

Các chức năng thực tế cần phải làm một vài điều

  1. Chúng tôi cần lấy phiên bản cơ sở dữ liệu được lưu trữ
  2. So sánh chúng với phiên bản cơ sở dữ liệu hiện tại của chúng tôi
  3. Nếu nó mới hơn, chúng ta chạy lại hàm
    global $wpdb;
    $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
    4
  4. Cuối cùng, chúng tôi lưu trữ phiên bản cơ sở dữ liệu cập nhật vào bảng tùy chọn

Phần lớn, chúng ta thực sự có thể sử dụng lại hàm

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
29 như chúng ta đã làm ở trên, với một số sửa đổi nhỏ

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
8

Lưu ý rằng chúng ta không cần sử dụng câu lệnh

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
08, vì
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
4 sẽ lấy câu lệnh SQL của chúng ta, so sánh nó với các bảng hiện có và thực hiện sửa đổi cho phù hợp. Khá tiện dụng

Phần kết luận

WordPress không bị giới hạn trong việc tạo các trang web đơn giản vì nó đang nhanh chóng chuyển sang một khung ứng dụng chính thức. Mở rộng WordPress thông qua các loại bài đăng tùy chỉnh và phân loại tùy chỉnh nên là ưu tiên chính của chúng tôi. Tuy nhiên, khi chúng tôi cần kiểm soát tốt hơn dữ liệu của mình, thật yên tâm khi biết rằng chính WordPress cung cấp nhiều chức năng và lớp khác nhau như

global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3 để các nhà phát triển sử dụng. Đây là những gì làm cho WordPress trở thành một giải pháp trưởng thành

Chia sẻ bài viết này

Firdaus Zahari

Firdaus Zahari là một nhà phát triển web đến từ Malaysia. Niềm đam mê của anh ấy xoay quanh [nhưng không giới hạn] WordPress và phát triển giao diện người dùng

Wpdb được định nghĩa ở đâu trong WordPress?

Để thực hiện các thao tác cơ sở dữ liệu, WordPress cung cấp một lớp wpdb có trong tệp – wp-includes\wp-db. php . Lớp này tóm tắt các chức năng cơ sở dữ liệu cho WordPress và hầu hết các chức năng của WordPress trực tiếp hoặc gián tiếp sử dụng lớp này.

Làm cách nào để lưu trữ dữ liệu trong cơ sở dữ liệu bằng WordPress?

Trong phpMyAdmin, chọn cơ sở dữ liệu WordPress của bạn rồi nhấp vào bảng wp_wpforms_entries. .
Tại đây, bạn có thể tìm thấy tất cả các mục nhập biểu mẫu của mình trong cột trường
Bạn có thể làm nhiều thứ ở đây như tạo bảng. .
Hãy xem cách quản lý các mục nhập biểu mẫu trên trang web WordPress của bạn

Làm thế nào để sử dụng cơ sở dữ liệu WordPress?

Cách tối ưu hóa cơ sở dữ liệu WordPress .
Vào Hosting -> Quản lý
Truy cập Cơ sở dữ liệu -> phpMyAdmin -> Nhập phpMyAdmin
Trong phần Cấu trúc, nhấp vào Kiểm tra tất cả -> Tối ưu hóa bảng

Chủ Đề