1. HOME
  2. 開発・ブログ運営
  3. WordPress
  4. $wpdb が NULL なんだけど・・・っていう場合は、wp-load.php を require するべし
2014年08月05日
Google ウェブマスターツールで指摘された内容を修正してみ ...
2012年05月16日
プラグインを使わずに記事一覧(カテゴリ別)ページを作成してみた ...
2012年02月11日
WordPress3 でブログを立ち上げてみた
2012年07月10日
WordPress 用の MySQL ユーザーの権限レベル ...
2014年08月30日
MarsEdit で WordPress のカスタムフィールド ...
2012年02月12日
WordPress3 のテーマを変更しました

$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.