WordPressで実行されたSQLを画面に表示し確認する方法
WordPressで実行されたSQLを画面に表示し確認する
WordPressで任意のデータをDBより取得し、一覧表示するようなカスタマイズを進めていると
思うようにデータが表示されない、、、、いったいどのようなSQLがDBにリクエストされているのだ?
と、調査したくなるケースがあります。特にSQLを知る技術者にとって、フレームワーク等で、
ある種機能化された(隠蔽化された?)DBアクセスは、かゆいところに手が届かない気持ちになります。
ソースのこの箇所で実行されているSQL構文を見せろ!そこから解析してやる!
というわけで、WordPressのDBアクセスモジュール「WP-Query」で実行されたSQLを丸裸にしてやりましょう。
SQLを画面に表示する
例1:
たとえばこのようなソースの場合、、、
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<div class="row"> <?php // custom post type query $custom_query = new WP_Query( array( 'post_type' => 'staffprof', 'meta_key' => '役職', 'category_name' => 'shop01', 'meta_value' => array("スタイリスト","スタイリスト/店長"), 'orderby' => 'menu_order', 'order' => 'ASC' ) ); ?> </div> |
大体は当たりがつくのですが、さてさてどのようなSQLが実行されているのでしょうか。
WP_Queryが実行された後に以下の一行を追加してみましょう。
echo “Last SQL-Query: {$custom_query->request}”;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<div class="row"> <?php // custom post type query $custom_query = new WP_Query( array( 'post_type' => 'staffprof', 'meta_key' => '役職', 'category_name' => 'shop01', 'meta_value' => array("スタイリスト","スタイリスト/店長"), 'orderby' => 'menu_order', 'order' => 'ASC' ) ); echo "Last SQL-Query: {$custom_query->request}"; ?> </div> |
するとリクエストされたSQL文が画面に表示されます。
例2
1 2 |
$customPosts = new WP_Query($yourArgs); echo "Last SQL-Query: {$customPosts->request}"; |
同じように上記のようなWP_Queryでもしっかり画面表示されます。
まとめ
SQLを画面に表示することで根本的な不具合原因にたどり着けますし、
他人の書いたソースの解析(できればやりたくないですが)にも役立ちます。
もちろん調査が終われば追加したechoの削除を忘れずに。
できればアクセスログにSQLを書き出すほうがスマートです。
最後までご覧いただき有難うございました。
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。