我找到了以下PHP代码:
add_action( 'pre_get_posts', 'generate_random_category_posts', 100 );
function generate_random_category_posts( $query ) {
$catto = get_queried_object();
if ( $query->is_category() && $query->is_main_query() && $catto->term_id === 9 ) {
$query->set( 'orderby', 'rand' );
}
}
此人能够随机显示所选类别(在本例中为 9 )的WordPress帖子。我想做的是随机显示除单个选定类别之外的所有类别。
我知道我是否要删除
IF (if ( $query->is_category() && $query->is_main_query() &&
$catto->term_id === 9 )
它将随机显示所有类别,而不仅仅是一个类别(可以),但是我将如何排除单个类别呢?
预先感谢您的帮助。
答案 0 :(得分:0)
立即-将category
参数替换为category__not_in
get_posts的示例
get_posts([
'order_by' => 'rand',
'category__not_in' => $exclude_this_category
]);
基于您的代码的示例会影响所有查询,我不建议您使用它。
另外,is_category()
表示您已经在查看单个类别页面,更好地防止该用户访问具有您要排除的类别的页面。但是对于下面的示例代码应该可以工作
add_action( 'pre_get_posts', 'generate_random_category_posts', 100 );
function generate_random_category_posts( $query ) {
$catto = get_queried_object();
if ( $query->is_archive() && !$query->is_category() && $query->is_main_query()) {
$query->set( 'orderby', 'rand' );
$query->set( 'category__not_in', $exclude_this_category );
}
}
更多信息here。