
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 する場合は 絶対パスで指定するべきなんだって
でわでわ。