特定のメタ値が設定されている投稿を除外するようにメインループ(index.php)を変更する必要があります(ACFのTrue/Falseフィールドを使用)。
function exclude_featured_post( $query ) {
if ( $query->is_home() && $query->is_main_query()) {
// in case for some reason there's already a meta query set from other plugin
$meta_query = $query->get('meta_query')? : [];
// append yours
$meta_query[] = [
'key' => 'featured_post',
'value' => '1',
'compare' => '!='
];
$query->set('meta_query', $meta_query);
}
}
add_action( 'pre_get_posts', 'exclude_featured_post' );
これは投稿を返しません。これをメインクエリとマージする必要があると思います。
global $wp_query;
$merged_args = array_merge( $wp_query->query, $exclude_featured_args );
$query->set('meta_query', $merged_args);
ただし、これも投稿を返しません。
更新:
'compare' => '!='の代わりに 'compare' => 'NOT EXISTS`を使用すると、すべての投稿が返され、meta_queryが除外されます。
function exclude_featured_post( $query ) {
if ( $query->is_home() && $query->is_main_query()) {
// in case for some reason there's already a meta query set from other plugin
$meta_query = $query->get('meta_query')? : [];
// append yours
$meta_query[] = [
'key' => 'featured_post',
'value' => '1',
'compare' => 'NOT EXISTS'
];
$query->set('meta_query', $meta_query);
}
}
add_action( 'pre_get_posts', 'exclude_featured_post' );
Dave、あなたのコードはその中のいくつかを除いて良いように思われるので、試してみてください。
function exclude_featured_post( $query ) {
if ( is_front_page() && $query->is_main_query() ) {
$meta_query = $query->get('meta_query') ? $query->get('meta_query') : array();
// append yours
$meta_query[] = array(
'key' => 'featured_post', // please make sure that key is correct
'value' => '1',
'compare' => '!=' // you can also try 'NOT EXISTS' comparison
);
$query->set('meta_query', $meta_query);
}
}
add_action( 'pre_get_posts', 'exclude_featured_post' );
上記のコードがうまくいかない場合は、次の手順に従ってください。
それがホームページのメインクエリに対して実行されていることを確認してください - ちょうどその中に何かをエコーするようにしてください - このステップは2行目の条件が正しいかどうかを理解するのに役立ちます。
orderby
などのもっと単純なパラメータで遊ぼう。それがうまくいくかどうかチェックする。
他のmeta_query
パラメータを持たない投稿についてこのコードをテストしてください。
Meta_queryの代わりにmeta_key
、meta_value
およびmeta_compare
paramsを使用してみてください。ここで見つけることができる例 https://rudrastyh.com/wordpress/meta_query.html
そしてfeature_post
というキーが正しいことを確認して、それを信じるのは難しいですが、私の学生の間でそれが最も一般的な間違いです。