へっぽこコーダーの備忘録

phpやらjavascriptやら、使った技術をすぐに忘れちゃうから、おぼえがき程度に書いていきまーす
2020.06.17

WordPressでSQLのクエリを確認する方法【実行中のSQLを表示】

WordPressで投稿を取得する際、query_postsに条件を指定することはよくあると思います。
複雑な条件を指定する場合だと、SQL文を直接カスタマイズしたほうが早いときもあります。

ただ、実行するとうまく投稿を取得できない。。。
そもそもこれって、正しいSQL文になってるの!?

そういう場合に、実行されてるSQL文を確認できるコードです。

WordPressでSQLのクエリを確認する方法

結論としては、以下の1文を書いてやれば、実行中のSQL文を表示することができます。

print_r($GLOBALS['wp_query']->request);

コードの説明

ページを表示する際に処理されるデータは、処理タイミングでグローバル変数wp_queryに保存されていきます。

実行されるSQL文に関しては、グローバル変数wp_queryrequestプロパティに保存されますので、先ほどのコードで表示することができます。

また、コードの記載場所は、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行で簡単に確認することができますので、ぜひ使用してみてください。