Intereting Posts
Выход из системы перенаправления на главную страницу Пользовательский столбец пользовательской таблицы WordPress Проблемы с настройкой встроенного слайдера Изменение цвета фона в моих виджетах темы Проверяет ли необходимость в блоге? Фильтрация пользовательских сообщений с использованием автоматических заполняемых селекторов выпадающего списка WordPress вставляет сообщения программно через URL-адрес Получить имя пункта меню с помощью wp_nav_menu Учетная запись конечных пользователей с большим количеством пользовательских ролей (не Woocommerce) mu-plugins: это правильный способ использовать действие для init? Изменение постоянной информации Структура для последовательного номера для каждого сообщения? Перенаправление после активации пользователя the_content () не работает на моем мобильном телефоне Android Запросить пользователей для загрузки аватара при регистрации Как сделать страницу с? P = 1

Как определить последнюю отредактированную дату публикации?

Я пишу небольшой скрипт извлечения, чтобы сделать DB pull. Меня попросили получить все сообщения о ресторанах (тип пользовательских сообщений), которые входят в число 1000 лучших хитов, или были добавлены или отредактированы за последние 3 года. Хорошо, так что у меня есть 1000 лучших хитов, сделанных через экспорт из Google Analytics. Затем я сделал SQL-экстракт следующим образом:

SELECT p.ID, concat('http://www.toronto.com/restaurants/', p.post_name) FROM wp_posts p WHERE p.post_type = 'restaurant' AND p.post_status = 'publish' AND p.post_modified < DATE_SUB(now(), INTERVAL 36 MONTH); 

Я думал, что у меня это лизало. Затем пользователи посмотрели на него и нашли несколько ресторанов, которые, как я думал, были за пределами 3-х лет, которые были на самом деле внутри . При расследовании я обнаружил, что это связано с пересмотром . 🙁

Итак, какова наилучшая практика для определения последней отредактированной даты с учетом изменений?

Если я правильно задал ваш вопрос и вам нужны сообщения, созданные / измененные между 3 годами и сегодня, попробуйте этот запрос:

 SELECT p.ID, concat('http://www.toronto.com/restaurants/', p.post_name) FROM wp_posts p WHERE p.post_type = 'restaurant' AND p.post_status = 'publish' AND p.post_modified > DATE_SUB(now(), INTERVAL 36 MONTH); 

Поскольку ваш DATE_SUB возвращает что-то вроде этого: СЕЙЧАС – 3 года, так что это что-то вроде строк 2011-09-20 12:21:41.000000 , и вы используете знак < , поэтому вы проверяете почту, которая была создана или изменен до этой даты, поэтому вместо получения сообщения, созданного / измененного между 3 годами ранее и сегодня, вы получаете сообщение, созданное / измененное более 3 лет назад.

Кроме того, вы не получаете ревизию, потому что, когда вы укажете post_type = 'restaurant' , и в редакции есть post_type называемая revision , вы просто получаете сообщение, относящееся к настраиваемому типу сообщений, указанному вами.