Как вывести в случайном порядке посты в категории wp?

Надо чтоб посты в категории выводились каждый раз при перезагрузке страницы в случайном порядке. Помогите пожалуйста найти правильное решение. Я использовала этот код, но по какой причине не работает, возможно я использую не тот файл.

$query = new WP_Query( array( 'post_type' => 'movie', 'orderby' => 'rand', 'posts_per_page' => '-1' ) );

if ( $query->have_posts() ):
    while ( $query->have_posts() ) :
        $query->the_post();
        //Echo the title, the excerpt, etc.
    endwhile;
endif;

Ответы (1 шт):

Автор решения: Arbery

Неправильный шаблон single.php - это шаблон одиночной записи, хотя бы archive.php или category.phpдля списка категорий/таксономий/меток. Но и в них напрямую WP_Query, чтобы его модифицировать, c высокой вероятностью нет. Поэтому в function.php событие pre_get_posts чтобы повлиять на основной объект WP_Query и проверка шаблона is_category() чтобы не затронуть другие запросы:

add_action( 'pre_get_posts', 'rand_category' );
function rand_category( $query ) {
    if( is_category() ) {
        $query->set( 'orderby', 'rand' );
    }
}
→ Ссылка