WordPressで投稿を取得する際、query_postsに条件を指定することはよくあると思います。
複雑な条件を指定する場合だと、SQL文を直接カスタマイズしたほうが早いときもあります。
ただ、実行するとうまく投稿を取得できない。。。
そもそもこれって、正しいSQL文になってるの!?
そういう場合に、実行されてるSQL文を確認できるコードです。
WordPressでSQLのクエリを確認する方法
結論としては、以下の1文を書いてやれば、実行中のSQL文を表示することができます。
print_r($GLOBALS['wp_query']->request);
コードの説明
ページを表示する際に処理されるデータは、処理タイミングでグローバル変数wp_queryに保存されていきます。
実行されるSQL文に関しては、グローバル変数wp_queryのrequestプロパティに保存されますので、先ほどのコードで表示することができます。
また、コードの記載場所は、query_postsで条件を指定した場合は、query_postsを実行した後に記載しましょう。
コードの記述場所例
<php query_posts('posts_per_page=-1'); print_r($GLOBALS['wp_query']->request); //query_postsを指定した後に記述する if ( have_posts() ) while ( have_posts() ) : the_post(); ・ ・ ・
query_postsを記述しない場合は、特に記載場所を意識しなくても大丈夫です。
SQL以外に確認できる情報
グローバル変数wp_queryには、他にも処理中のデータが保存されていますので、参考までに保存データのプロパティ名を紹介しておきます。
- ・$GLOBALS[‘wp_query’]->query
- ・$GLOBALS[‘wp_query’]->query_vars
- ・$GLOBALS[‘wp_query’]->tax_query
- ・$GLOBALS[‘wp_query’]->meta_query
- ・$GLOBALS[‘wp_query’]->queried_object_id
- ・$GLOBALS[‘wp_query’]->request
- ・$GLOBALS[‘wp_query’]->posts
まとめ
WordPressをカスタマイズする場合、思うようにデータが取得できない場合などに、SQLデータや処理情報の確認ができると非常に便利です。
そんな場合は、wp_queryを利用したコード1行で簡単に確認することができますので、ぜひ使用してみてください。