В шаблоне Newsmatic есть слайдер. Как сделать первую запись рандомной?

В шаблоне Newsmatic есть слайдер. Как сделать первую запись рандомной?

Этот слайдер состоит из 2 частей:
Слайдер (основной баннер) — использует WP_Query
Блок ниже слайдера ("trailing posts") — использует get_posts()

Справа вроде бы рандомно выводит материалы.

А вот чтобы левый блок выводил случайные:

В этом блоке используется $slider_args, который передаётся в WP_Query.

Чтобы сделать случайный порядок, нужно добавить 'orderby' => 'rand' в массив $slider_args.

Найди эту строку:

$slider_args = apply_filters( 'newsmatic_query_args_filter', $slider_args );

Добавь после неё:

$slider_args['orderby'] = 'rand';

сам файл: /public_html/wp-content/themes/newsmatic/template-parts/main-banner/template-four.php

P.S. Я отключил рандомизацию (т.к. высота-ширина - статистические и качество картинок в слайдере плохое). Это влияет на первое впечателение.
Поэтому закомментировал рандомно, а добавил чтобы в слайдере записи начинались с 3 записи (последние опубликованные). И ограничил 3 записями.
Так проще, проработать 5-7 записей с нормальными преьвью и показывать качественный слайдер.

 <?php
            $slider_args = apply_filters( 'newsmatic_query_args_filter', $slider_args );
            
                  //  $slider_args['orderby'] = 'rand';
                  
                  // Пропускаем первые 2 записи
                    $slider_args['offset'] = 2;
                    // Если ты хочешь показать 3 записи, начиная с 3-й:
                 $slider_args['posts_per_page'] = 3;
            
            $slider_query = new WP_Query( $slider_args );

Если выводить по ID

         
$slider_args = array(
    'post_type'      => 'post',
    'post__in'       => array(43767, 43560), // ← твои ID
    'orderby'        => 'post__in',           // чтобы порядок был как в массиве
    'posts_per_page' => -1                    // все указанные записи
);

// Если нужно ограничить количество (например, 3)
// $slider_args['posts_per_page'] = 3;

Вывод по определенной метке


// Только записи с меткой (тегом) "TOP"
$slider_args['tag'] = 'top';


// Показываем 3 штуки
$slider_args['posts_per_page'] = 3;

См.также:
Как в плагине Newsmatic : Posts List сделать вывод материалов в сайдбаре рандомно?


В шаблоне Newsxo есть слайдер слева. Как сделать чтобы записи рандомно и ограничить 3 шт?

Вывод рандомно, но из определенной категории:

// Укажи нужные ID категорий (массив целых чисел)
$target_category_ids = array(72); // замени на свои ID 15, 23, 42

$slider_args['orderby'] = 'rand';

// Показываем 3 штуки
$slider_args['posts_per_page'] = 3;

$slider_args['category__in'] = $target_category_ids;
            

Еще более интереснее:

Берём записи с 3-й по 12-ю (пропускает 2 самых свежих, затем берёт следующие 10),
Выбирает из них 3 случайные,
Без привязки к категориям.

     
// Получаем 10 записей, начиная с 3-й по дате (пропускаем первые 2)
$recent_posts = get_posts(array(
    'numberposts' => 5,
    'offset'      => 2,
    'post_status' => 'publish',
    'post_type'   => 'post',
    'fields'      => 'ids',        // только ID
    'orderby'     => 'date',
    'order'       => 'DESC',
));

// Выбираем 3 случайные из этих 10
if (!empty($recent_posts)) {
    shuffle($recent_posts);
    $selected_ids = array_slice($recent_posts, 0, 3);

    $slider_args = array(
        'post__in'       => $selected_ids,
        'posts_per_page' => 3,
        'orderby'        => 'post__in', // чтобы сохранить случайный порядок
    );
} else {
    // На случай, если записей меньше 3 — использовать пустой слайдер или fallback
    $slider_args = array(
        'post__in' => array(0), // гарантирует отсутствие результатов
        'posts_per_page' => 0,
    );
}
guest
Закрыть меню

Предложить новую тему