Intereting Posts
Как выглядит выражение if, окружающее настраиваемое поле с двумя переменными (значениями хранения)? Добавьте функциональность надписи в пользовательскую тему WordPress Как запустить функцию на каждой странице, на каждом устройстве Какой каталог в моем реплике плагина делает пакет WordPress Plugin Directory? Допустимо ли создание функциональности в теме, созданной для клиента? Вложения screencast.com Видео в WordPress Multisite Динамическое подменю admin Входные данные из электронной почты, не относящиеся к файлу JSON та же роль пользователя или копировать роль пользователя, чтобы быть такой же, как и другая роль window.send_to_editor выдает неисчерпаемую строковую литералную ошибку при добавлении изображения с описанием нескольких строк почему экраны установки / обновления не прогрессируют на некоторых веб-хостах? Как загрузить изображения вручную в WordPress? Вызов боковой панели из шаблона SlideDeck 2, сделать back-end видимым только для администраторов изменение meta_query в parse_query

Что было бы командой PHP для удаления всех сообщений из категории X за последний месяц?

Я хочу запустить работу cron, которая навсегда удалит все должности, принадлежащие какой-либо категории, из прошлых X дней (скажем, неделя). Это, вероятно, очень простой, но я бы оценил некоторые указатели. Благодарю.

Первым шагом является создание задания cron.

Вторая часть требует запроса базы данных для определенного типа сообщения, где запись старше 1 недели. Мы можем сделать это с помощью get_posts () и указать аргумент категории и аргумент date_query.

//* If the scheduled event got removed from the cron schedule, re-add it if( ! wp_next_scheduled( 'wpse_263953_remove_old_entries' ) ) { wp_schedule_event( time(), 'daily', 'wpse_263953_remove_old_entries' ); } //* Add action to hook fired by cron event add_action( 'wpse_263953_remove_old_entries', 'wpse_263953_remove_old_entries' ); function wpse_263953_remove_old_entries() { //* Get all posts older than 7 days... $posts = get_posts( [ 'numberposts' => -1, //* Use `cat` to query the category ID //* 'cat' => 'wpse_263953_category_id', //* Use `category_name` to query the category slug 'category_name' => 'wpse_263953_category', 'date_query' => [ 'after' => date( "Ymd H:i:s", strtotime( '-7 days', current_time( 'timestamp' ) ) ), //* For posts older than a month, use '-1 months' in strtotime() ], ]); //* ...and delete them foreach( $posts as $post ) { wp_delete_post( $post->ID ); } } 

В следующем запросе будет указан список почтовых индексов старше 30 дней для данного идентификатора категории.

 SELECT p.ID as post_id, term.term_id as category_id FROM wp_posts as p LEFT JOIN wp_term_relationships as tr ON tr.object_id = p.ID LEFT JOIN wp_terms as term ON tr.term_taxonomy_id = term.term_id WHERE term.term_id = "CATEGORY ID HERE" AND DATEDIFF(NOW(), p.post_date) > 30 

После того, как вы получите список, вы можете определить погоду, которую хотите удалить, или нет.

Чтобы удалить следующую функцию после использования, второй параметр (ИСТИНА) удалит сообщение навсегда. Если вы хотите сохранить сообщение в trash pass (FALSE)

 wp_delete_post( 'YOUR_POST_ID_HERE', TRUE); 

Не забудьте изменить префикс таблицы, если его не «wp_»,