すべての投稿を表示したいが、[おすすめ]カテゴリから最新の投稿のみを除外します。この猫の他の投稿は表示されるはずです。これを達成するためにループに何を追加すればよいのでしょうか。私は他の猫からの他のすべての記事も同様に表示されるようにしたいです。
デフォルトでは、ループは投稿を日付の降順で取得するので、次のようなことができます。
ループの外側:
$featured_flag = false;
ループの内側:
if(in_category('Featured')) {
if($featured_flag) {
the_content();
}
else {
$featured_flag = true;
}
}
else {
the_content();
}
Featuredカテゴリからの投稿が最初に検出された(つまり最新の)投稿は無視され、$featured_flag
はtrue
に設定されます。それ以降のループthe_content()
までの時間が表示されます。
編集:ページネーションを考慮して、$featured_flag
を$_SESSION
変数に変更できます。そうすることでtrue/falseの値は複数のページに渡って持続し、一度true
の投稿に設定されると正しく表示され続けます。私のやり方の誤りを指摘してくれてありがとうBainternet :)
しばらく前に私は 特定のカテゴリ で最新の投稿を取得するという単純な関数を投稿しました。
function get_lastest_post_of_category($cat){
$args = array( 'posts_per_page' => 1, 'order'=> 'DESC', 'orderby' => 'date', 'category__in' => (array)$cat);
$post_is = get_posts( $args );
return $post_is[0]->ID;
}
そのため、その関数を取得したら、WP_Queryまたはquery_postsを使用してpost__not_in
パラメータを使用し、その投稿を除外することができます。
query_posts(array(`post__not_in` => array(get_lastest_post_of_category($CAT_ID))));
$ CAT_IDを実際のカテゴリIDに変更するだけです。