Сообщения из категории создаются почти исключительно с использованием расширенных настраиваемых полей, и они включают дату начала и дату окончания из настраиваемых полей. По сути, я хочу запросить все сообщения из этой конкретной категории (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) один или два раза в день, чтобы проверять все сообщения из категории и при необходимости перемещать их.
Что-то вроде этого сработает в вашем случае
# crontab -e
00 * * * * /usr/local/bin/php /home/user/yourscript.php
Сначала из командной строки Linux
crontab -e
в первой строке введите следующий
00 * * * * /usr/local/bin/php /home/user/yourscript.php
первый набор чисел указывает время выполнения задания cron.
Вы создавали какие-либо рабочие места linux cron в прошлом? вы можете добавить скрипт php для запуска в качестве задания linux cron.