我正在为一个系统开发一个插件,将Wordpress用作身份验证后端,这样我就可以在另一个应用程序中使用我现有的Wordpress用户。该插件在单网站模式下运行时效果很好:
include /path/to/wordpress/wp-config.php
global $wpdb;
// SQL and code to select user and compare entered passwords
我需要这对Wordpress多站点安装以及工作。当我拉入wp配置时。对于MS站点,我最终遇到以下错误:
Fatal error: Call to a member function set_prefix() on a non-object in /path/to/wordpress/wp-includes/ms-settings.php on line 126
在第126行,WP试图针对$wpdb设置表前缀,但由于某些原因,此处不存在$wpdb。我运行了xdebug,创建了$wpdb,但没有ms设置。php没有看到它。我可以通过添加以下内容来解决此问题:
global $wpdb;
就在第126行之前,它可以工作,但我不想修改核心Wordpress代码。有没有更好的方法来引导Wordpress?
最合适的回答,由SO网友:prettyboymp 整理而成
您需要包括wp-load.php
, 不是wp-config.php
.
根据您的操作方式,您可能还需要设置$_SERVER
变量,如果它们尚未设置为阻止WordPress尝试重定向您。例如:
$_SERVER = array(
"HTTP_HOST" => "http://example.com",
"SERVER_NAME" => "http://example.com",
"REQUEST_URI" => "/",
"REQUEST_METHOD" => "GET"
);