サポート » テーマ » WP_Queryでの複数ループ時の変数の名前について

  • 解決済 lee31

    (@lee31)


    いつもお世話になっています。

    WP_Queryを使って1ページに複数のループを書く場合、new WP_Query( $args );を格納する変数は同じ名前でも良いのでしょうか?($my_queryの部分)

    //ループ1つめ
    <?php
    $my_query = new WP_Query( $args );
    if ( $the_query->have_posts() ) :
    while ( $the_query->have_posts() ) : $the_query->the_post();
     ?>
    ループ内容
    <?php endwhile; endif; wp_reset_postdata(); ?>
    
    別のコンテンツ(HTML)
    
    //ループ2つ目
    <?php
    $my_query = new WP_Query( $args );
    if ( $the_query->have_posts() ) :
    while ( $the_query->have_posts() ) : $the_query->the_post();
     ?>
    ループ内容
    <?php endwhile; endif; wp_reset_postdata(); ?>

    もしくは、$my_query1、$my_query2というように別の名前をつけるべきでしょうか?
    試したところ、wp_reset_postdata();でリセットしているので同じ名前でもちゃんと動いているのですが、どちらが正しい記述方法なのでしょうか?
    よろしくお願いいたします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • wp_reset_postdata()はグローバル変数$wp_queryをリセットするものなので、新しくWP_Queryのインスタンスを作成する場合は特に必要のない処理だと思います。

    $my_query1、$my_query2というように別の名前をつけるべきでしょうか?

    何をするかにもよりますが、どちらでもいいと思います。

    関係ないですけど、ご掲示のコードだと動かないような気がします…。

    モデレーター jim912

    (@jim912)

    横槍すみません。

    wp_reset_postdata()はグローバル変数$wp_queryをリセットするものなので、新しくWP_Queryのインスタンスを作成する場合は特に必要のない処理だと思います。

    変数 $wp_queryをリセットするのは、wp_reset_query() です。wp_reset_postdata() は、$post をはじめとしたグローバル変数をリセットするもので、WP_Query を利用した場合は、必要と考えてください。

    変数名ですが、ループ終了後に利用する予定がなければ、同名の変数であるほうが、メモリの消費を抑えられるはずです。

    トピック投稿者 lee31

    (@lee31)

    x743様
    jim912様

    投稿を見ていただき、ありがとうございます。

    やりたかったことは、例えば1つ目のループではカテゴリーAの投稿をを5件、2つ目のループではカテゴリーBの投稿を10件表示、というような簡単な内容なのですが、
    jim912様の言う様に同名でも大丈夫そうですね。

    wp_queryの公式関数リファレンスの「複数のループ」では、
    変数名を変えて記述しているので、複数使う場合は変数を変えないと何か問題が起きるのかなと思ったのですが、ここではなぜ変えているのか分かりますでしょうか?

    wp_reset_postdata() は、$post をはじめとしたグローバル変数をリセットするもので

    失礼いたしました。
    お詫びして訂正…時間が過ぎておりました。すみません。

    モデレーター Daisuke Takahashi

    (@extendwings)

    変数名を変えている理由はわかりませんが、公式ドキュメントなので、メモリ消費などのパフォーマンス面よりも、わかりやすさを優先したのでしょう。

    トピック投稿者 lee31

    (@lee31)

    Daisuke Takahashi様

    なるほど、そうかもしれませんね。同じ名前ですと紛らわしく見えますし…。

    トピック投稿者 lee31

    (@lee31)

    答えてくださった皆様、ありがとうございました!
    ここで解決済みとさせていただきます。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「WP_Queryでの複数ループ時の変数の名前について」には新たに返信することはできません。