2018年08月01日
Docker for Mac を使って WordPress の...
2018年07月29日
Docker for Mac のインストール
2018年07月08日
Docker 便利コマンドあれこれ
2018年07月08日
オライリーの Docker 本(Docker Up &...
2018年07月05日
iPad mini 2 を購入しました
2018年07月04日
Docker で Jenkins するときのあれこれ

HOME > カテゴリ(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 を使う場合は、


require_once('/wp-load.php');
global $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 - 2013 MacBook Air とWordPressでこうなった All rights reserved
Designed by Theme Junkie. Powered by WordPress.