【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全体をもらって、書き換えてしまった方が早い場合は、こういう手もありかもしれません。