2017-01-20 17 views
0

に私は私のWordPressのインストールでスタンドアロンスクリプトを持っていると私はwpdbオブジェクトをロードするには、以下の使用していた。しかし未定義の関数__()への呼び出しのwp-をdb.php

define('SHORTINIT', true); 
require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'); 

を、私のエラーログ出力以下のときに私がスクリプトを呼び出す:

PHP Fatal error: Call to undefined function __() in /wp-includes/wp-db.php on line 1297 

私はWP-をdb.phpにライン1297に行くとき、私はコメントしている場合、私は

_doing_it_wrong('wpdb::prepare', sprintf(__('The query argument of %s must have a placeholder.'), 'wpdb::prepare()'), '3.9.0'); 

を見ますその行を外しても、スクリプトはクラッシュすることはありませんが、WordPressの中核をなすファイルなので、それは最善の解決策ではないと私は思います。

別のクラスでprepareメソッドを使用しますが、このエラーが発生するのはスタンドアロンスクリプトファイルのみです。 WordPressが「認識する」ファイルにオブジェクトを作成して同じ別のクラスを再利用すると、エラーは発生しません。

+0

ランダムなワードプレスファイルを1つ含みますが、wordpressが自動的にインクルードする他の20種類のファイルのどれも含まれていないので、なぜ未定義関数というエラーが表示されるのでしょうか? –

+0

_「スタンドアロンスクリプト」_と言うと、WPを経由せずに直接アクセスされるという意味ですか?その場合(WPファイルを使用したい場合)、スクリプトの開始時に[WPを初期化する](http://wordpress.stackexchange.com/a/47059)をする必要がありますより多くの問題があります)、または単純にその関数のモックを作成してください。 –

+1

WPドキュメントによれば、 '__'は' wp-includes/l10n.php'にあります。それではそれ自体が他のファイルを必要とするものを参照しません;-) – CBroe

答えて

1

According to WP docs, __wp-includes/l10n.phpに位置しています - あなたは試してみて、そのだけでなく含める(そしてそれはその後、自身が順番に、それはどうやら他のファイルに;-)


を必要としていることのものを参照していないことを願っています可能性があり私はちょうど答えとしてそれを追加します。

関連する問題