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 global
immediatamente all'interno di una classe, è necessario dichiarare $wpdb
come global
all'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.
2,5 anni dopo e la tua risposta mi ha aiutato. Grazie! – Branndon
3 anni dopo e anche la tua risposta mi ha aiutato. Grazie! –
4 anni dopo, e la tua risposta lo ha fatto di nuovo! Grazie! – user1758777