2011-02-01 29 views
6

Tôi đang viết một plugin và cố gắng để yêu cầu một số dữ liệu từ một bảng tùy chỉnh trong cơ sở dữ liệu của tôi sử dụng:Wordpress wpdb không xác định biến

$current_text = $wpdb->get_results("SELECT text FROM addtext ORDER BY id DESC LIMIT 1"); 

nhưng chỉ nhận được lỗi biến Không xác định: wpdb

Bất kỳ ý tưởng tại sao điều này không hoạt động? Tôi đã theo dõi các tài liệu và cọ rửa Google, không có may mắn. Vẫn còn khá mới để bổ sung WP vì vậy có lẽ một cái gì đó hiển nhiên.

Cảm ơn!

Trả lời

25

Tôi cần sử dụng global $wpdb; trong chức năng của mình.

+5

2,5 năm sau và câu trả lời của bạn đã giúp tôi. Cảm ơn! – Branndon

+3

3 năm sau, và câu trả lời của bạn cũng giúp tôi. Cảm ơn! –

+2

4 năm sau, và câu trả lời của bạn đã làm điều đó một lần nữa! Cảm ơn! – user1758777

2

Một lưu ý cần thêm: Bạn không thể sử dụng global bên trong một lớp và dĩ nhiên bạn phải sử dụng global để làm cho đối tượng của mình hoạt động khi sử dụng $wpdb.

Trong khi bạn không thể sử dụng globalngay bên trong một lớp học, bạn phải khai báo $wpdb như globalbên trong một hàm bên trong lớp, và điều này không làm việc.

ví dụ: Điều này cho bạn một lỗi:

class wpdb_test { 
     global $wpdb; // can't use global as a direct 'child' of a class 
     public function __construct() { 
      ... 
     } 
} 

Vì không thể sử dụng trực tiếp global trong lớp học. Tương tự, chỉ cần tham khảo $wpdb bên trong lớp cũng sẽ cho bạn một lỗi vì đối tượng không biết số $wpdb là gì. Bạn phải khai báo $wpdbglobal từ bên trong một hàm bên trong lớp học của bạn.

ví dụ: Này làm việc tốt:

class wpdb_test { 
     public $variable_name; 
     public function __construct() { 
      global $wpdb; // safe to use because it's inside a function 
      ... 
     } 
} 

... và vì $wpdb đã được tuyên bố global bên trong một hàm bên một lớp học mà bạn có thể sử dụng nó.

Các vấn đề liên quan