这很容易。WP\\U查询具有不同的参数,可用于排除类别。(小)问题在于如何从所有循环中排除该类别,仍然能够直接查询它。
您可以使用\'pre_get_post\'
动作钩,检查\'category_name\'
当前查询的参数,以及它是否与\'street-style\'
, 使用排除它\'category__not_in\'
WP_Query
论点
如果你不检查is_main_query()
它将应用于所有查询,包括主查询和自定义查询。
保持使用能力\'category__not_in\'
参数,您还应该检查该参数是否已设置,如果已设置,则将实际参数与排除“street style”类别的参数合并。
也许代码比文字更简洁:
add_action(\'pre_get_posts\', function($query) {
if ( is_admin() ) return;
if ( $query->get(\'category_name\') !== \'street-style\' ) {
$not_now = $query->get(\'category__not_in\') ? : array();
$street_style = get_term_by(\'slug\', \'street-style\', \'category\');
if ( is_object($street_style) && isset($street_style->term_id) ) {
$query->set(\'category__not_in\', array_merge($not_now, $street_style->term_id ) );
}
}
});
使用此代码,您将能够在“street style”类别中仅显式获取帖子设置
\'category_name\'
“街头风格”,就像你做操作码一样。
请注意,我的代码需要PHP 5.3或更新版本。