1つ目はトップページ(front-page)に表示させるお知らせ一覧をget_postsで取得して、特定のカテゴリーを除外したい。
2つ目はブログページ(home)に表示させるお知らせ一覧から特定のカテゴリーを除外したい。
1つ目get_postsで取得するときに特定のカテゴリーの排除
最初はこう書いてました。
$args = array(
'posts_per_page' => 3,
'category' => -2,-7,-15
);
$posts_array = get_posts( $args );
-15にあたるカテゴリーがうまく除外できない。
以下のように’category’の指定を”で囲みました
$args = array(
'posts_per_page' => 3,
'category' => '-2,-7,-15'
);
$posts_array = get_posts( $args );
これでうまくいきました。-2と-7だけのときはちゃんと動いているように見えてたのですが、勘違いだったかもしれません。
2つ目はブログページ(home)に表示させるお知らせ一覧から特定のカテゴリーを$query->setでの削除
function change_posts_cate_page($query) {
if ( is_admin() || ! $query->is_main_query() )
return;
if( $query->is_home()){
$query->set( 'category','-2,-7,-15' );
return $query;
}
}
add_action( 'pre_get_posts', 'change_posts_cate_page' );
これがうまくいかない。get_postsと同じでcategoryでいいんだと思っていけれども「cat」が正しいそうです。
function change_posts_cate_page($query) {
if ( is_admin() || ! $query->is_main_query() )
return;
if( $query->is_home()){
$query->set( 'cat','-2,-7,-15' );
return $query;
}
}
add_action( 'pre_get_posts', 'change_posts_cate_page' );
これでうまくいきました。
WP_Queryの場合は違うんだな。
https://developer.wordpress.org/reference/classes/wp_query/#category-parameters
cat
(int) – use category id.category_name
(string) – use category slug.category__and
(array) – use category id.category__in
(array) – use category id.category__not_in
(array) – use category id.
今までちゃんと動いているように見えたのは幻だったんだろうか…。
コメントを残す