2011-02-01 17 views
6

Estoy escribiendo un plugin y tratando de solicitar algunos datos de una tabla personalizada en mi base de datos usando:Wordpress wpdb indefinido variables

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

pero acaba de obtener el error Undefined variable: wpdb

Cualquier idea ¿Por qué esto no está funcionando? Seguí los documentos y recorrí Google, sin suerte. Todavía bastante nuevo para los plugins de WP, probablemente algo obvio.

Gracias!

Respuesta

25

Necesitaba usar global $wpdb; en mi función.

+5

2.5 años después, y tu respuesta me ayudó. ¡Gracias! – Branndon

+3

3 años después, y tu respuesta también me ayudó. ¡Gracias! –

+2

4 años después, ¡y tu respuesta lo hizo de nuevo! ¡Gracias! – user1758777

2

Una nota para agregar: No se puede utilizar global dentro de una clase, y por supuesto, usted tiene que utilizar global con el fin de obtener sus objetos a trabajar usando $wpdb.

Aunque no se puede utilizar de inmediato global dentro de una clase, debe declarar como $wpdbglobaldentro de una función dentro de la clase, y esto funciona.

p. Ej. Esto le da un error:

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

Debido global no puede ser utilizado directamente dentro de una clase. Del mismo modo, simplemente haciendo referencia a $wpdb dentro de la clase también le da un error porque el objeto no sabe qué es $wpdb. Debe declarar $wpdb como global desde dentro de una función que está dentro de su clase.

p. Ej. Esto funciona muy bien:

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

... y porque $wpdb ha sido declarado global dentro de una función dentro una clase que son capaces de usarlo.