WP_Query: показывать сообщения в определенном порядке в течение определенного времени

Я хотел бы отображать каждый пост в порядке, указанном в разделе post__in, на моей домашней странице в течение одного дня. То есть сначала должен показываться пост с ID 3 до 23:59:59, затем пост с ID 1 в течение 24 часов до 23:59:59, затем пост с ID 2 и так далее. Когда все посты будут показаны, он должен начаться снова с самого начала. У кого-нибудь есть идея, как это реализовать?

function post_of_the_day( $query_args) {
    global $post;
    
    $query_args = array(
            'post_type'      => 'example_post_type',
            'posts_per_page' => 1,
            'post__in'       => array(3, 1, 2, 4, 7, 6, 5)
        );

     return $query_args;

     }
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вам нужен только один пост в день недели, вы можете использовать функцию PHP date() со строкой формата 'w'. Он возвращает 0 для воскресенья, 1 для понедельника, 6 для субботы и т. д. Затем вы можете использовать это в качестве индекса, чтобы найти один идентификатор сообщения, который вы хотите, из вашего массива, и использовать аргумент 'p' в ваших аргументах WP_Query()

function post_of_the_day( $query_args ){
    $post_ids = array( 3, 1, 2, 4, 7, 6, 5 ); // List of available ID's
    $id_index = absint( date('w') );          // 0-6 based on day of the week

    $query_args = array(
        'p' => $post_ids[$id_index],          // 3 on Sun, 1 on Mon, 5 on Sat
        'post_type' => 'example_post_type'    // Your post type
    );
    
    return $query_args;
}

Вам не нужно запрашивать все 7 сообщений с помощью post__in, если вам нужен только один. Как правило, вы хотите попытаться получить как можно меньше информации, необходимой для скорости, оптимизации и простоты обслуживания.

Большое спасибо! Это мне очень помогло! Можно ли это также применить к неделям месяца или к неделям года? Чтобы не пост в день, а в неделю показывался? @Xhynk

RaWa 22.12.2020 21:33

Конечно, все, что вы можете получить номер для. date('n') дает вам число 1-12 месяца, date('W') дает вам число 1-52 недели (начинается по понедельникам) и немного больше, но вот ответ о том, как получить "текущая неделя месяц как число"

Xhynk 22.12.2020 22:38

Идеальный! Большое спасибо!

RaWa 22.12.2020 23:14

Другие вопросы по теме