1. HOME
  2. 開発・ブログ運営
  3. WordPress
  4. $wpdb が NULL なんだけど・・・っていう場合は、wp-load.php を require するべし
2012年11月12日
WordPress の記事抜粋( the_excerpt() ...
2012年12月06日
Facebook の「いいね」ボタンやコメントボックスを外した ...
2012年06月19日
フィルターフックを使って TwitterTools をカスタマ ...
2014年08月28日
超簡単!WordPress のカスタムフィールドを作成してみた ...
2012年06月21日
ABOUT ページを更新しました
2012年02月12日
フッターのレイアウトが崩れてちゃんと表示されない(泣) ...

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