2011-02-01 15 views
6

Sto scrivendo un plugin e cercando di richiedere alcuni dati da una tabella personalizzata nel mio database utilizzando:Wordpress wpdb indefinito variabile

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

ma solo ottenere l'errore Variabile non definita: wpdb

Qualsiasi idea perché questo non funziona? Ho seguito i documenti e perlustrato Google, senza fortuna. Ancora piuttosto nuovo per i plugin WP quindi probabilmente qualcosa di ovvio.

Grazie!

risposta

25

Ho bisogno di utilizzare global $wpdb; nella mia funzione.

+5

2,5 anni dopo e la tua risposta mi ha aiutato. Grazie! – Branndon

+3

3 anni dopo e anche la tua risposta mi ha aiutato. Grazie! –

+2

4 anni dopo, e la tua risposta lo ha fatto di nuovo! Grazie! – user1758777

2

Una nota da aggiungere: non è possibile utilizzare global all'interno di una classe e, naturalmente, è necessario utilizzare global per far funzionare gli oggetti utilizzando $wpdb.

Mentre non è possibile utilizzare globalimmediatamente all'interno di una classe, è necessario dichiarare $wpdb come globalall'interno di una funzione all'interno della classe, e questo funziona.

ad es. Questo vi dà un errore:

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

Perché global non può essere utilizzato direttamente all'interno di una classe. Allo stesso modo, il semplice riferimento a $wpdb all'interno della classe anche ti dà un errore perché l'oggetto non sa cosa sia $wpdb. Devi dichiarare $wpdb come global da una funzione interna alla tua classe.

ad es. Questo funziona bene:

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

... e perché $wpdb è stato dichiarato global all'interno di una funzione all'interno una classe si è in grado di usarlo.

Problemi correlati