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ỉnhTrong 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ừ cPanelLà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'];
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 WordPressCá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'];
3Khô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 đâyglobal $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
2Tấ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
16 sẽ tương ứng với bảngglobal $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
17global $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
18 sẽ tương ứng với bảngglobal $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
19global $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
30 sẽ tương ứng với bảngglobal $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
31global $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
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'];
1Ngoà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ư sauglobal $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
3Nế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ơnTruy 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'];
5Và để tắt nó đi
global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
6Mộ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'];
53global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
2Như 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'];
7Lư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'];
61global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
2Phươ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
66 cho chuỗiglobal $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
67 cho số nguyênglobal $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
68 cho phaoglobal $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
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áchHã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'];
0Lư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'];
25Tuy 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 đâyglobal $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
1Kế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ẵnLớ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'];
2Nế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'];
78global $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ácSử 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
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ơnglobal $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
- 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
17 hoặcglobal $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óglobal $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
- 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
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ảngglobal $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
19global $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
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'];
4Tiế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'];
4global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
6Cậ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'];
04global $wpdb;
$result = $wpdb->get_results['SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10'];
7Các chức năng thực tế cần phải làm một vài điều
- Chúng tôi cần lấy phiên bản cơ sở dữ liệu được lưu trữ
- 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
- Nếu nó mới hơn, chúng ta chạy lại hàm
4global $wpdb; $result = $wpdb->get_results['SELECT * FROM ' . $wpdb->posts . ' LIMIT 10'];
- 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'];
8Lư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ụngPhầ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ànhChia 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