Intereting Posts
Анимированное изображение Gif не загружается правильно Как установить язык даты в плагине Можно ли не иметь дочернюю тему и просто создать тему с нуля? Получить сообщение id в действии WordPress? использование нескольких терминов в tax_query Добавить пользовательские мета-поля при создании пользователя Как определить, зарегистрирован ли администратор вне цикла Как исправить: метаданные родителя переопределяют метаданные детей Получите meta_id вместе с meta_key и meta_value Правила переадресации и одно сообщение Почему post_type игнорируется в этом запросе? $ wpdb-> get_results утечка памяти Как остановить перенаправление, если пользователь уже находится на правильной странице (с помощью переключателя Case) Попытка изменить активную тему на всех сайтах в Multisite Как я могу сделать вывод только о непривязанных носителях, например, в боковой панели?

удаление персонализированной почты на основе пользовательской даты поля

RESOLVED ## обновленный код ниже.

Я создал пользовательский тип сообщения, называемый «esitykset», и я хотел бы удалить их, если они старше, чем дата в поле «show_date» для этой должности.

Поэтому я попробовал следующий код

add_action( 'wp', 'expire_events_daily' ); function expire_events_daily() { if ( ! wp_next_scheduled( 'delete_expired_events' ) ) { wp_schedule_event( time(), 'hourly', 'delete_expired_events'); } } add_action( 'delete_expired_events', 'delete_expired_events_callback' ); function delete_expired_events_callback() { $args = [ 'post_type' => 'esitykset', 'posts_per_page' => -1, 'fields' => 'ids', //only get post id's 'meta_query' => [ [ 'key' => 'show_date', 'value' => current_time( 'Y/m/d' ), 'compare' => '<' ] ] ]; $events = get_posts( $args ); if ( $events ) { // Loop through the post ID's and delete the post foreach ( $events as $id ) wp_trash_post( $id ); } } 

Чтобы вышеприведенный код работал, мне пришлось добавить

 define('ALTERNATE_WP_CRON', true); 

в моем файле wp-config.php.

Теперь это сработало. Спасибо за помощь.

Solutions Collecting From Web of "удаление персонализированной почты на основе пользовательской даты поля"

У вас есть несоответствие формата даты. Вы говорите, что ваши даты сохраняются как Y/m/d в вашем настраиваемом поле, что верно, но затем вы пытаетесь сопоставить этот формат с отметкой времени unix ( которая является результатом time() ).

Форматы даты и времени должны быть в точно таком же формате, чтобы соответствовать или сравнивать две разные даты в настраиваемом поле, так как рабочие поля настраиваются. Логики не существует и нет логики для преобразования и сопоставления разных форматов даты и времени, поэтому вам нужно вручную убедиться, что все соответствует.

Вместо использования time() чтобы вернуть текущую дату / время и использовать это как сравнение даты и времени, вы должны использовать current_time( 'Y/m/d' ) . Просто примечание, это возможно только из WordPress 3.9

Еще одно замечание, мы можем упростить вашу функцию, как следует, что будет быстрее и лучше для производительности ( ПРИМЕЧАНИЕ: требуется минимум PHP 5.4 )

 function delete_expired_events_callback() { $args = [ 'post_type' => 'esitykset', 'posts_per_page' => -1, 'fields' => 'ids', //only get post id's 'meta_query' => [ [ 'key' => 'show_date', 'value' => current_time( 'Y/m/d' ), 'compare' => '<' ] ] ]; $events = get_posts( $args ); if ( $events ) { // Loop through the post ID's and delete the post foreach ( $events as $id ) wp_delete_post( $id ); } }