【WordPress】WordPressが実行しているSQLを見たい
問題
WordPressが実行しているSQLを見てみたい!
- こういう関数をこういうオプションで実行したらどんなSQLになっているか。
- デバッグに。
- なんだか動きがおかしいんだけど、SQLおかしくない?確認したい。
- ログをとりたい。
などで。
答え
ほぼすべてのSQLが、queryというフィルターを通る。
なのでこんなことをすると全部var_dump()できる。
//functions.phpなどに function sql_dump($query) { var_dump($query); return $query; } add_filter('query', 'sql_dump');
上の例では、var_dump()して画面に出しているだけだが、ファイルやデータベースにログを残したり、SQLを改変したりができる。
function my_modify_query($query) { if ('こんな条件にマッチしたら') { $query = str_replace('SQLの特定の部分を', '書き換えてしまおう!', $query); } return $query; } add_filter('query', 'my_modify_query');
普通は、posts_orderby、post_limits、posts_join、posts_where……などを使うところだけど、SQL全体をもらって、書き換えてしまった方が早い場合は、こういう手もありかもしれません。
コメント