ちょっと案件があって、WordPressのプラグイン作ってました。設定画面があって、MySQLから引っ張ってきたデータをjQueryのAjaxで読み込むヤツ。
読み込むCGIが別ファイルなわけですが、これで$wpdb使ったら、Internal Server Errorが返される。global $wpdb唱えてもダメ。数時間さまよった挙句、ここを見つけて解決しました。
WordPressフォルダ直下にあるwp-blog-header.phpをincludeするのね。これだとglobal $wpdbもいらない。
ただし、
include(get_bloginfo('wpurl'). '/wp-blog-header.php');
とか、カッコ良くやってもダメです。get_bloginfo自体読みこまれてない。あくまで、
include('../../../wp-blog-header.php');
であるところがミソ。
エラーをvar_dumpしとけって?このパターンて、出力の設定が面倒で…。