WordPressで実行されたSQLを画面に表示し確認する方法

WordPressで実行されたSQLを画面に表示し確認する
WordPressで任意のデータをDBより取得し、一覧表示するようなカスタマイズを進めていると
思うようにデータが表示されない、、、、いったいどのようなSQLがDBにリクエストされているのだ?
と、調査したくなるケースがあります。特にSQLを知る技術者にとって、フレームワーク等で、
ある種機能化された(隠蔽化された?)DBアクセスは、かゆいところに手が届かない気持ちになります。
ソースのこの箇所で実行されているSQL構文を見せろ!そこから解析してやる!
というわけで、WordPressのDBアクセスモジュール「WP-Query」で実行されたSQLを丸裸にしてやりましょう。
SQLを画面に表示する
例1:
たとえばこのようなソースの場合、、、
<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}”;
<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
$customPosts = new WP_Query($yourArgs);
echo "Last SQL-Query: {$customPosts->request}";
同じように上記のようなWP_Queryでもしっかり画面表示されます。
まとめ
SQLを画面に表示することで根本的な不具合原因にたどり着けますし、
他人の書いたソースの解析(できればやりたくないですが)にも役立ちます。
もちろん調査が終われば追加したechoの削除を忘れずに。
できればアクセスログにSQLを書き出すほうがスマートです。
最後までご覧いただき有難うございました。
コメント
この記事へのトラックバックはありません。






この記事へのコメントはありません。