Wp-content/db.php:这个文件在哪里?

时间:2014-09-09 作者:John Sonderson

在源文件的顶部wp-includes/wp-db.php 我可以找到以下评论:

/**
 * WordPress Database Access Abstraction Object
 *
 * It is possible to replace this class with your own
 * by setting the $wpdb global variable in wp-content/db.php
 * file to your class. The wpdb class will still be included,
 * so you can extend it or simply use your own.
我想知道如何用不同的类替换wpdb类,但我在wp content/db下找不到任何文件。php。文档中是否有错误?

谢谢

2 个回复
最合适的回答,由SO网友:Pat J 整理而成

您可以创建自己的dp.php 中的文件wp-content 目录如果您定义$wpdb 在那里,它将替换WordPress的默认值$wpdb 对象

它没有列在Pluggable Functions 列表(这并不奇怪,因为$wpdb 是一个类,而不是一个函数),但它在概念上似乎相似。

此外,如果你还没有读过,我建议你仔细阅读WPDB Class 文档

SO网友:Mark Kaplun

您需要自己创建文件。这是引用为“下拉列表”的文件之一。它们不随wordpress内核一起分发,其目的是在db中扩展功能。php case将默认数据库“driver”替换为另一个数据库“driver”,例如与非MYSQL的DB通信。

文件的典型结构是

class altdb extends wpdb{

    public function __construct(){
        parent::__construct( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
    }

    function insert($table, $data, $format = null) {
        // code to override insert
    }

    function query($sql) {
        // code to override query
    }
}

global $wpdb;
$wpdb = new altdb();
这是一个相对简单的示例,它只覆盖插入和查询,但仍然使用相同的数据库。你可以做得更复杂。

结束

相关推荐

Hook into $wpdb

有没有办法连接到WPDB实例($WPDB)?我基本上想要的是在执行所需的查询get之前执行自己的函数。这可能吗?第一个答案的附加评论问题: $query = $wpdb->prepare(\"SELECT * FROM \" . $wpdb->prefix . \"test WHERE type = %s and ip = %s\", $type, $ip_full_log); $fetch = $wpdb->get_results($query, ARRAY_A)