ワードプレスで以前の投稿クエリを上書きするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/608025

  •  03-07-2019
  •  | 
  •  

質問

上部にカテゴリリストがあるページがあり、通常はその下に投稿をリストする必要があります。カテゴリリストは、次を使用して作成されます。

    <?php $display_categories = array(4,7,8,9,21,1); $i = 1;
foreach ($display_categories as $category) { ?>
<?php single_cat_title(); ?> //etc
</div>
    <?php } ?>

ただし、これにより、投稿ループはカテゴリごとに投稿を順序付けているようです。カテゴリの順序と日付の降順の順序を無視するようにします。ドキュメントによるとquery_posts()を2回使用できないので、念のため新しいWP_Queryを作成しました。

    <?php $q = new WP_Query("cat=-1&showposts=15&orderby=date&order=DESC");
    if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post(); ?>
    the_title(); // etc
    endwhile; endif; ?>

ただし、この still は、日付順ではなく、カテゴリ(上記のリストと同じ順序)、次に日付順のようです。

役に立ちましたか?

解決

以前にもこれに問題がありました。

これを試してください:

      <?php
     global $post;
     $myposts = get_posts('numberposts=5');

     foreach($myposts as $post) : 
     setup_postdata($post);
     ?>
       <div <?php post_class(); ?>>
         <div class="title">
           <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
           <p class="small"><?php the_time('F j, Y'); ?> by <?php the_author(); ?></p>
         </div>
         <?php the_excerpt(); ?>
       </div>
 <?php 
     endforeach; 
 ?> 

重要な行は「global $ post;」です。

これにより、グローバルクエリがリセットされます。 「the_author()」や「the_content()」などの関数にアクセスするには、「setup_postdata($ post)メソッドが必要です。

-クリス

他のヒント

ワードプレスの経験はありませんが、いくつかの可能性があります:

  1. 「注文」を定義します; query_posts()を呼び出している文字列で2回パラメータを使用しますが、問題が発生するかどうかはわかりません。
  2. 同様に、&quot; show&quot;は有効なパラメータではありません。「showposts」を探していた可能性があります。

パラメータとその効果については、 http://codex.wordpress.org/Template_Tags/query_posts#Parameters

query_postsはときどき扱いにくいです。このようなものを試して、それが機能するかどうかを確認してください:

query_posts(array('category__not_in'=>array(1),
                  'showposts'=>15,
                  'orderby'=>date,
                  'order'=>DESC));

それは問題ではないので、次のようにupdate_post_caches($ posts)を2番目のループに追加してみてください:

<?php $q = new WP_Query("cat=-1&showposts=15&orderby=date&order=DESC");
if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post(); update_post_caches($posts); ?>
the_title(); // etc
endwhile; endif; ?>

おそらくプラグインの問題を解決する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top