如何在wp-config.php中使用is_admin

时间:2015-05-30 作者:Ravi

我正在尝试为管理员和用户选择不同的数据库,以减少数据库的负载。在wp配置中。当我尝试使用代码时

if(is_admin())
{
define(\'DB_NAME\', \'wp_db\');
}
else
{
define(\'DB_NAME\', \'other_wp_db\');
}
两个数据库使用相同的用户名和密码。

我得到一个错误

致命错误:对D:\\xampp\\htdocs\\wordpress\\wp config中未定义函数的调用是\\u admin()。php在线24

如何在wp配置中使用is\\u admin()函数。php文件?

有人能帮忙吗。

3 个回复
SO网友:birgire

我会小心这样做,因为您假设所有的数据库修改只会发生在管理后端,但情况可能并非总是这样。这个wp-cron 我想到了,但也有一些插件使用前端写入。因此,使用这种方法,您的两个数据库可能会出现严重的同步问题。

在走主/从路线之前,您可以做很多事情:

检查你的日志,如果有什么奇怪的地方WP_Query 这样效率不高

  • db.php 放置在wp-content 目录它检查传入SQL查询中的任何写入/更新,并将它们重定向到主数据库。但我只是浏览了一下source 看起来它不支持mysqli 扩展,仅不推荐的mysql. 如果你不喜欢自己分叉,那么似乎至少存在一个fork 支持mysqli (我与这个项目无关)。

  • SO网友:Marek

    现在使用此WP内置功能还为时过早。您可以在一些插件或主题文件中使用它,但不能在WP环境仍在加载时使用。

    由于我不确定您的意图是否正确,因此必须使用其他方法(使用PHP本机函数)区分前端和管理。例如如下所示:

    if( strpos($_SERVER[\'REQUEST_URI\'],\'/wp-admin/\') !== FALSE ) {
      define(\'DB_NAME\', \'wp_db\');
    } else { ... }
    
    但我不认为这是防弹的解决方案。Ajax调用在管理中处理,wp-login.php 不在上述代码范围内,等等。

    SO网友:Dmitio Tar

    尝试插入代码

    if(is_admin()) {...}
    
    之后

    require_once(ABSPATH . \'wp-settings.php\');
    
    因为在wp设置时加载了函数is\\u admin()。执行php。通过这种方式,您可以避免出现错误消息,但我无法理解为什么您的站点只能为管理员正常工作?这似乎是语义错误。我认为有些组件在administrator下也不能正常工作。

    结束