使用wp配置从插件连接到数据库

时间:2017-03-15 作者:Maltese Falcon

Im使用以下内容访问Wordpress数据库中的表格信息

    require_once(ABSPATH . \'wp-config.php\');
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysqli_select_db($conn, DB_NAME);
工作正常,我可以连接并显示信息。问题是,当我尝试从工具下仪表板中的插件执行相同的操作时,我得到以下消息:

注意:在C:\\xampp\\htdocs\\wordpressexpensereport\\wp content\\plugins\\editdb\\connection中使用了未定义的常量ABSPATH-假定为“ABSPATH”。php在线2

警告:require\\u once(ABSPATHwp config.php):无法打开流:C:\\xampp\\htdocs\\wordpressexpensereport\\wp content\\plugins\\editdb\\connection中没有此类文件或目录。php在线2

致命错误:require\\u once():无法打开所需的“ABSPATHwp config”。C:\\xampp\\htdocs\\wordpressexpensereport\\wp content\\plugins\\editdb\\connection中的php“(include\\u path=\';C:\\xampp\\php\\PEAR”)。php在线2

我已经检查了我的wp配置,我有以下内容

    /** Absolute path to the WordPress directory. */
if ( !defined(\'ABSPATH\') )
    define(\'ABSPATH\', dirname(__FILE__) . \'/\');

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . \'wp-settings.php\');
我的实现是否缺少一些东西?

谢谢

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

我猜这是一个自定义的“插件”,您希望在外部运行一个连接到WordPress数据库的文件,而不是作为标准插件在WordPress环境中加载,就像@belinus说的那样,您可以使用$wpdb

不管怎样,自从ABSPATH 定义于wp-config.php, 您不能使用ABSPATH 查找并加载wp-config.php - 因为它尚未加载,因此尚未定义。这就是有缺陷的逻辑。。。因此,您会遇到错误。

如果你确定wp-config.php 位于“plugin”文件所在的目录中,可以执行以下操作:

function find_require($file,$folder=null) {
    if ($folder === null) {$folder = dirname(__FILE__);}
    $path = $folder.\'/\'.$file;
    if (file_exists($path)) {require($path); return $folder;}
    else {
        $upfolder = find_require($file,dirname($folder));
        if ($upfolder != \'\') {return $upfolder;}
    }
}
$configpath = find_require(\'wp-config.php\');
这将递归搜索wp-config.php 并在插件文件目录上方加载它。(再次假设wp-config.php 位于插件文件上方的目录中。)

SO网友:user1049961

您可能只是错过了require_once. 将其更改为:

require_once(ABSPATH . \'/wp-settings.php\');

相关推荐

如何读取WordPress$Query关联数组(散列)键的值

WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。if( $query->is_post_type_archive( \'directory\' ) ){ ...//do stuff } 我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。var_dumb($query->is_post