Je construis un plugin et je suis assez nouveau sur Wordpress. J'ai une classe qui a quelques méthodes pour exécuter les requêtes de base de données. La classe regarde comme suit
class MyClass{
private $wpdb;
function __construct(){
global $wpdb;
}
function query(){
$wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->wp_competitors
( id, field_key, field_value ) VALUES ( %d, %s, %s )",1,
$field_key, $field_value) );
}
}
Je voudrais pouvoir utiliser à l'intérieur de ma classe la classe de base de données native wordpress, comment faire cela?
class MyClass{
function __construct(){
global $wpdb;
$this->db = $wpdb;
}
function query(){
return $this->db->query(
$this->db->prepare("INSERT INTO {$this->db->wp_competitors} (id, ield_key, field_value) VALUES ( %d, %s, %s )",
1, $field_key, $field_value)
);
}
}
L'utilisation d'une propriété $db
personnalisée dans votre classe présente l'inconvénient de ne pas pouvoir l'utiliser dans les méthodes statiques, si jamais vous en créiez. Deux approches alternatives:
class MyClass {
public function query1() {
global $wpdb;
$wpdb->query('SQL');
}
public function query2() {
$GLOBALS['wpdb']->query('SQL');
}
}