J'essaie d'obtenir les données de requête avec trace en étendant la classe wpdb et en écrasant la fonction de requête personnalisée. Le code fonctionne correctement si je crée un lien symbolique db.php mais ne fonctionne pas directement si j’essaie de le faire dans un fichier plug-in.
Le code est:
<?php
if ( ! defined( 'SAVEQUERIES' ) ) {
define( 'SAVEQUERIES', true );
}
class My_DB extends wpdb {
function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) {
parent::__construct( $dbuser, $dbpassword, $dbname, $dbhost );
}
function query( $query ) {
if ( ! $this->ready ) {
if ( isset( $this->check_current_query ) ) {
$this->check_current_query = true;
}
return false;
}
if ( $this->show_errors ) {
$this->hide_errors();
}
$result = parent::query($query);
$result = parent::query( $query );
if ( ! SAVEQUERIES ) {
return $result;
}
$i = $this->num_queries - 1;
$this->queries[$i][3] = debug_backtrace(false);
$this->queries[$i][4] = $this->time_start;
$this->queries[$i][5] = $result;
return $result;
}
}
$wpdb = new My_DB( DB_USER, DB_PASSWORD, DB_NAME, DB_Host );
?>
Appeler wp_set_wpdb_vars()
après avoir remplacé $wpdb
fera probablement l'affaire.
$wpdb = new My_DB();
wp_set_wpdb_vars();
Cependant, le seul moyen officiellement pris en charge de remplacer wpdb
consiste à placer un db.php
dans le dossier wp-content. Si vous le pouvez, je suggérerais de le faire.