我需要修改主循环(index.php),以排除具有特定元值集的帖子(通过ACF真/假字段)。
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);
然而,这也不会返回任何帖子。Update:
使用“比较”=>“不存在”,而不是“比较”=>“!=”似乎返回所有帖子并排除meta\\u查询。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\' );
从这里开始:https://core.trac.wordpress.org/ticket/18158