他们有什么办法来扩展WPDB类并覆盖默认的查询函数吗

时间:2018-08-09 作者:Akash Manhas

我试图通过扩展wpdb类并覆盖自定义查询函数来获取带有回溯的查询数据。如果我创建db的符号链接,代码运行良好。php,但如果我尝试在插件文件中执行它,则无法直接工作。

代码为:

<?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 );

?>

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

使命感wp_set_wpdb_vars() 更换后$wpdb 可能会成功。

$wpdb = new My_DB();
wp_set_wpdb_vars();
然而,官方支持的唯一替代方法wpdb 是放置db.php 在wp内容文件夹中。如果可以的话,我建议你这样做。

结束

相关推荐

删除jQuery迁移和使用依赖项

我在我的排队脚本部分中设置了jQuery作为依赖项,例如:wp_enqueue_script( \'jquery\' ); wp_enqueue_script( \'scripts\', get_template_directory_uri() . \'/js/scripts.min.js\', array( \'jquery\' ) ); 现在,我想删除jquery迁移,但显然要保留jquery本身,所以我发现this answer 声明这样做:add_filter( \'wp_def