Запросить все сообщения из категории, а затем переместить их в другую, отфильтровав post_meta

Сообщения из категории создаются почти исключительно с использованием расширенных настраиваемых полей, и они включают дату начала и дату окончания из настраиваемых полей. По сути, я хочу запросить все сообщения из этой конкретной категории (ICO), посмотреть, меньше ли предварительная дата, чем текущая дата, переместить сообщение в категорию x или, если начальная дата меньше текущей даты, переместить его в категорию y. У меня есть 2 даты начала и 2 даты окончания через поле повторителя в ACF. Эти сообщения являются проектами, и у них есть «предварительные» даты начала и обычная дата начала, обе с датами окончания.

Пока я сделал это и не уверен, что это лучшее решение, поэтому обращаюсь к вам, профи :)

<?php

$args = array(
        'numberposts' => -1,
        'cat' => 13,
        'post_type' => 'post',
        'post_status' => 'publish',
        'category_name' => 'ico',
);

$the_query = new WP_Query( $args );
$posts = $the_query->posts;

foreach($posts as $post) {

$the_id = get_the_ID();
$curtime = date('d-m-Y');

    $content = get_field('overview', $the_id);
        if ($content):
           foreach ($content as $key => $content): 
           $start_date = $content['ico_time_start'];
           $end_date = $content['ico_time_end'];
           $prestart_date = $content['pre_ico_time_start'];
           $preend_date = $content['pre_ico_time_end'];
           endforeach;
        endif;

    $newicoDate = date("d-m-Y", strtotime($end_date));
    $newpreicoDate = date("d-m-Y", strtotime($preend_date));
    $currenttime = new DateTime($curtime); 
    $icoEnd   = new DateTime($newicoDate);
    $preicoEnd = new DateTime($newpreicoDate);

    if ($preicoEnd < $currenttime) : wp_set_post_categories( $the_id, array( 13, 15 ) ); endif;
    if ($icoEnd < $currenttime) : wp_set_post_categories( $the_id, array( 13, 16 ) ); endif;
}
?>

Я хочу иметь возможность запускать это как cron (а не wp cron) один или два раза в день, чтобы проверять все сообщения из категории и при необходимости перемещать их.

Вы создавали какие-либо рабочие места linux cron в прошлом? вы можете добавить скрипт php для запуска в качестве задания linux cron.

unixmiah 07.08.2018 17:03
Стоит ли изучать 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 и хотите разрабатывать...
1
1
30
1

Ответы 1

Что-то вроде этого сработает в вашем случае

# crontab -e
00 * * * * /usr/local/bin/php /home/user/yourscript.php

Сначала из командной строки Linux

crontab -e

в первой строке введите следующий

00 * * * * /usr/local/bin/php /home/user/yourscript.php

первый набор чисел указывает время выполнения задания cron.

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