私は認証バックエンドとしてWordpressを使うシステム用のプラグインに取り組んでいるので、私は私の既存のWordpressユーザーを別のアプリケーションで使うことができます。このプラグインは、シングルWebサイトモードで実行しているときにうまく機能します。
include /path/to/wordpress/wp-config.php
global $wpdb;
// SQL and code to select user and compare entered passwords
これはWordpress Multisiteのインストールに対しても動作するために必要です。私がMSサイトのためにwp-config.phpを引っ張るとき、私はこのエラーで終わります:
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-settings.phpはそれを見ません。私はこれを加えることによってこれを直すことができます:
global $wpdb;
126行目の直前に実行しても動作しますが、Wordpressのコアコードを変更したくありません。 Wordpressをブートストラップするより良い方法はありますか?
wp-load.php
ではなくwp-config.php
を含めることをお勧めします。
あなたのやり方によっては、WordPressがあなたをリダイレクトしようとするのを防ぐために$_SERVER
変数が設定されていない場合は設定する必要があるかもしれません。例えば:
$_SERVER = array(
"HTTP_Host" => "http://example.com",
"SERVER_NAME" => "http://example.com",
"REQUEST_URI" => "/",
"REQUEST_METHOD" => "GET"
);
あなたが経験しているのは、グローバルスコープにアクセスできないメソッド、関数、またはコールバックの中からWordpressをロードしようとしているということです。
Wordpressはこれの外にロードされている場合 - 私の場合はエラーなしで走った。
最初に$wpdb
globalを宣言してからwp-load.phpをインクルードする必要があります。
global $wpdb;
require_once('/path/to/wordpress/wp-load.php');