WordPress:随机帖子,但不包括单个帖子类别

时间:2020-07-28 09:02:42

标签: php wordpress

我找到了以下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 )

它将随机显示所有类别,而不仅仅是一个类别(可以),但是我将如何排除单个类别呢?

预先感谢您的帮助。

1 个答案:

答案 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