※下に注釈有り
WordPress のカスタマイズを行っていると、WordPress がどのような SQL を発行しているか確認したい場面があったので、次のようなスクリプトを書きました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php define('SAVEQUERIES', 1); add_action('shutdown', 'on_shutdown'); function on_shutdown() { global $wpdb; echo '<table class="wp-list-table widefat fixed posts">'; echo '<thead><th>SQL</th><th>Time</th><th>Caller</th></thead>'; echo '<tbody>'; foreach ($wpdb->queries as $q) { list ($query, $time, $caller) = $q; echo sprintf("<tr><td>%s</td><td>%s</td><td>%s</td></tr>\n", $query, $time, str_replace(',', "<br>\n", $caller)); } echo '</tbody>'; echo '</table>'; } |
上記を functions.php などに書くと、ページの最下部に次のような感じで SQL が出力されます。
簡単ですが、スタックトレースも出力されたりするので、これは良い感じになりました。
でも WordPress はそれはそれは沢山の SQL を吐きますねー。
§
以上の話は、「Debug Bar Extendar」プラグイン などでも出来るそうですー(; ^ω^)。
まあ、普通に考えると WordPress だし、プラグインありますよね。今回はプラグイン探す前に「SQLのログ取って表示したろ」って思ってしまったのが運の尽きでした。コアにログを取っている箇所を見つけたのですが、出力関数が見当たらなかったので、自分で書いた次第です。
まあまあ、何かのほんのご参考まで。