• Как вывести посты в конкретной категории в случайном порядке (random)? Чтоб посты всегда выводились в случайном порядке, каждый раз при перезагрузке страницы категории.

    Мне предложили такой код:

    add_action( ‘pre_get_posts’, ‘rand_category’ );
    function rand_category( $query ) {
    if( is_category() ) {
    $query->set( ‘orderby’, ‘rand’ );
    }
    }

    В этом случае random работает во всех категориях. И есть ошибка: посты дублируются или лучше сказать заменяются и появляются посты одинаковые по два три раза. Помогите улучшить код?

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • вы непременно хотите свой сайт затормозить?

    А еще есть какие то варианты ответа?

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

    Создайте шаблон категории со своим Query и параметрами

    А еще есть какие то варианты ответа?

    Если вас не пугают возникшие тормоза и вам не нужен пажинатор постов, вставьте в своем коде вот в эту функцию if( is_category() ) параметром id категории, которую кастомизируете. Только перед этой строкой, чтобы в админке не рандомизировало, добавьте

    if (is_admin()) return;

    А что значит пожинатор постов?

    И как нам связаться, может вы мне поможете, я не смогу сама дописать код. Я буду рада заплатить)

    И как нам связаться, может вы мне поможете, я не смогу сама дописать код. Я буду рада заплатить)

    на форуме запрещено предложение или запрос оплаты, а также публикация данных для связи.
    кроме раздела Поиск специалистов

    Модератор Юрій

    (@yube)

    ведь вопрос простейший

    Был бы, если бы не «И есть ошибка: посты дублируются или лучше сказать заменяются и появляются посты одинаковые по два три раза.» Если я правильно понял, ТС хочет, чтобы посетителю показывались не просто случайные посты, а каждый раз при перезагрузке страницы или пагинации были новые, еще не показанные этому посетителю. А это уже отнюдь не тривиальная задача (для сайта). Причем не только для реализации, но и еще на уровне составления ТЗ.

    А почему бы не загуглить, ведь вопрос простейший и ответов на него хватает.

    add_action( 'pre_get_posts', 'rand_category' );
    function rand_category( $query ) {
    if(!is_admin() && $query->is_main_query() && is_category(8) ) {
    $query->set( 'orderby', 'rand' );
    }
    }

    8 это id категории

    qwert555

    (@qwert555)

    Спасибо. А если несколько категорий, то через запятую прописывать?

    add_action( 'pre_get_posts', 'rand_category' );
    function rand_category( $query ) {
    if(!is_admin() && $query->is_main_query() && is_category(8,20,35) ) {
    $query->set( 'orderby', 'rand' );
    }
    }

    Yuri

    (@yube)

    Надо чтобы посты при перезагрузке менялись местами, в случайном порядке. Ошибка с этим кодом такая что количество постов в категории остается тем же, но два поста одинаковых может быть, исчезает 1-2 поста из за этого, подменяются дублированным.

    <?php
        global $post;
    
        $myposts = get_posts([
            'numberposts' => 3,
            'orderby' => 'rand',
            'category'    => 3
        ]);
    
        if( $myposts ){
            foreach( $myposts as $post ){
                setup_postdata( $post );
                /*Тело поста*/
                }
            } else {
                // Постов не найдено
            }
            wp_reset_postdata(); // Сбрасываем $post
    ?>

    Добавляешь код при выводе на странице, по идее для случайного порядка используешь ‘orderby’ => ‘rand’

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «Записи в случайном прядке в категории» закрыта для новых ответов.