1. HOME
  2. 開発・ブログ運営
  3. WordPress
  4. $wpdb が NULL なんだけど・・・っていう場合は、wp-load.php を require するべし
2012年06月07日
プラグイン(Contact Form 7)を使ってメールフォー ...
2012年06月12日
YARPP プラグインで表示する「関連記事」を好きな位置に表示 ...
2012年06月26日
WordPress でランダムに記事をピックアップして表示して ...
2012年02月12日
WordPress3 でブログを立ち上げて初めに行った設定いろ ...
2012年06月16日
プラグイン(Smooth Scroll Links [SSL] ...
2012年12月05日
WordPress でカテゴリを並び替えるためのプラグインを ...

$wpdb が NULL なんだけど・・・っていう場合は、wp-load.php を require するべし

$wpdb は便利なグローバル変数ですが、$wpdb でエラーが出た。よくみると $wpdb が NULL だし・・・。なぜ?

WordPress のテーマをいじくったりしているときに、$wpdb を使いたい場合がままあります。$wpdb は、WordPress のデータベース(MySQL)オブジェクトを保持しているグローバル変数で、例えば、PHP プログラムからカテゴリを追加する場合には、$wpdb->create_category(“カテゴリ名”); などとしたりします。

なので、$wpdb を使う場合には、global $wpdb; と宣言する必用がありますが、その宣言をしてもエラーが出る(場合がある)。

ググってみたら、global $wpdb; だけではダメで、WordPress をインストールしたディレクトリにある、wp-load.php を読み込む必要があるみたい。

参考:WordPress › Support » $wpdb returning null…(英語)

なので、$wpdb を使う場合は、

の二行が必用みたいです。

以前 $wpdb を使ったときは、wp-load.php を require しなくても動いてたような気がするけど・・(勘違いかな?)

っていうか、WordPress 内(テンプレートファイルとか)で、$wpdb を使う場合は、WordPress 自身が wp-load.php を読み込んでるから require する必要なし。

WordPress の外から $wpdb を使う場合は、明示的に wp-load.php を require する必用がある、とかそういうことだと思います。

いずれにしても $wpdb を使ってエラーが出た場合は、var_dump($wpdb); で、$wpdb の値を確認して、NULL だったら、require_once(‘/locad.php’); を追加してみてください。

これでちゃんと動くと思います。

ちなみに wp-load.php に関わらず require する場合はサーバーの絶対パスで指定する必要があるので注意してくださいね。

関連記事:PHP で 外部ファイルを include したり require する場合は 絶対パスで指定するべきなんだって

でわでわ。






この記事にコメントする





Copyright © 2012 - 2014 MacBook Air とWordPressでこうなった All rights reserved
Powered by WordPress.