CommentOut

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

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

公開日:  最終更新日:

WordPressの記事情報はデータベースに登録されています。
そして、記事情報をPHPで取得するにはWP_Queryなどを使用します。
この時、欲しい記事が適切に取得できず、取得件数が0件になってしまうことがあるんですね。
特に、tax_queryやmeta_queryを使用するクエリでは条件が複雑になり、取得したい記事が取れないことがあります。

こういう時に「実行されたクエリを直接確認できたらデバッグが捗るのに・・・」と思うのですが、実はWP_Queryのクエリを確認する方法があります。

WP_Queryのクエリ(SQL)の中身を確認する方法

WP_Queryは取得した記事一覧の情報を変数に代入して使用しますが、この変数を使用してクエリを表示することが出来ます。

<?php
// 実行したクエリ(SQL)を表示
echo $query->request;
?>

変数に代入されたクラスのメンバ変数っていうことになるのかな。
メンバのrequestを表示することで、クエリの中身を確認することが可能です。

具体的には、以下のように使います。

<?php
// WP_Queryを使って記事を取得する
$query = new WP_Query(array(
    'post_type' => 'post',
    'meta_query' => array(
        array( // カスタムフィールド『area』に『tokyo』が含まれる場合
            'key' => 'area',
            'value' => 'tokyo',
            'compare' => 'LIKE',
        ),
    ),
    'orderby' => 'date',
    'order' => 'DESC'
));

// 取得した記事数を表示
echo "<p>取得した記事数:{$query->post_count}</p>";
// 実行したクエリ(SQL)を表示
echo "<p>実行したクエリ:{$query->request}</p>";
?>

表示されたクエリの中で条件に合わない物があれば、その条件を変更したり削除することで、狙った記事を取得することができますよ。

宣伝
WordPressサイトのテンプレート編集やトラブル対応、バグ修正、簡単なJavascriptの作成(カルーセルやバリデーション等)など、小規模なスポット対応を受け付けております。
もしお困りごとがありましたら、お問い合わせフォームよりご相談ください。

この記事を書いた人

uilou

uilou

プログラマー

基本的に、自分自身の備忘録のつもりでブログを書いています。 自分と同じ所で詰まった人の助けになれば良いかなと思います。 システムのリファクタリングを得意としており、バックエンド、フロントエンド、アプリケーション、SQLなど幅広い知識と経験があります。 広いだけでなく、知識をもっと深堀りしていきたいですね。