如何使用不同的数据库在后端列出和管理评论

时间:2013-06-01 作者:Sergey

我需要让Wordpress在“Comments”管理后端使用另一个数据库(不是wp config site wide中指定的数据库)。然后我必须能够像往常一样编辑、批准、删除等评论。我要连接的数据库服务器已设置为接受外部连接。

我有几个想法可以解决这个问题:

来自wp配置。php:如果用户正在查看评论页面,可以使用if块更改数据库连接字符串然而,这听起来并不好,我认为如果用户来回访问评论页面,这可能会创建许多不必要的数据库连接。

修改wp管理文件:创建一个wpdb实例,并告诉Wordpress将其用于注释管理类wp注释列表。php->类wp列表。php(一直到基类),但我看不到与数据库对话的位。

有没有可用的钩子来访问和更改数据库?(对此表示怀疑)请提前多谢。

2 个回复
SO网友:fuxia

您可以筛选query. 看见wpdb::query() 在里面wp-includes/wp-db.php.

您可以获得完整的SQL字符串作为参数。然后查找对comments表的查询:

add_filter( \'query\', function( $query ) 
{
    global $wpdb;

    if ( FALSE === stripos( $query, "FROM $wpdb->comments" )
        return $query;

    // Now change the SQL
});
但是您还必须捕获与其他表的所有连接。不确定这是否可以优雅地实现。

SO网友:Rarst

试图破坏整个数据库访问的问题是,即使在页面上处理注释,WP仍然需要并执行对其他数据的查询。挑战不在于改变查询的位置,而在于在不破坏所有内容的情况下改变查询。

您最好的机会可能是尝试一些在WP级别进行切分的解决方案(例如HyperDB 或SQL级别)。

PS如果您包含上下文,那么建议可能的替代方案将有助于您为什么需要(或认为需要)单独的注释表。周围有些人有处理大型装置的经验,他们的答案可能比一般理论更精确。

结束

相关推荐

操作方法:wpdb插入带有日期的记录

我正在编写一个插件,需要在激活时创建的自定义表中预加载一些数据。到目前为止,我的插入一直运行良好,直到我尝试插入具有日期数据类型的记录。有人能告诉我这里出了什么问题吗?数据库表定义:$sql = \"CREATE TABLE IF NOT EXISTS \" . $wpdb->prefix.SSM_ACADEMIC_YEAR_TABLE. \" ( id mediumint(12) NOT NULL AUTO_INCREMENT,