Миниатюры Сообщений – Удалить Избранное Изображение По Дате

  • Автор темы Dgekson44
  • Обновлено
  • 21, Oct 2024
  • #1

У меня есть проблема, для которой я не могу найти решения. Я ищу способ массового удаления избранных изображений сообщений старше X дней. Моя цель — 150 дней, но если я смогу ее установить, что бы ни тем лучше.

Я работал над этим в MySQL, но кажется, что мета_значение слишком сложно для моих ограниченных знаний о регулярных выражениях, и я не могу его преодолеть. И что мне нужно, так это чтобы избранное изображение в сообщениях старше X дней (цель 150) просто больше не существовало; не в коде, не видел и т.д...

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

Кто-нибудь сталкивался с такой проблемой? Кто-нибудь преодолел это? Может ли кто-нибудь помочь мне преодолеть это?

Я попробовал несколько плагинов, но безрезультатно. Если у вас есть один, который, как вы знаете, работает, пожалуйста, дайте мне знать.

Крайне важно, чтобы удаленные файлы были старше 150 дней, а не недавно.

Спасибо всем!

п.с. Я хочу добавить, что моя общая цель — удалить избранные публикации и изображения старше 150 дней. Конечно, я могу просто физически удалить файлы с сервера, но код все еще там. Я просто не могу этого иметь.

Вот что я делаю, чтобы удалить изображения сообщений. Можно ли его изменить, чтобы безопасно удалить избранные изображения, или есть лучший способ?

 (201[0-5]\/(?:0[1-9]|1[0-2])\/.*?\.(?:jpg|png|gif|jpeg)) to be replaced with placeholder.png
 

#пост-миниатюры #mysql

Dgekson44


Рег
20 Apr, 2011

Тем
69

Постов
201

Баллов
556
  • 25, Oct 2024
  • #2

@Ромул

Поскольку вы используете Wordpress, я настоятельно рекомендую максимально использовать функциональность Wordpress. Я бы порекомендовал использовать PHP и создать собственный плагин или какой-нибудь скрипт, который вы сможете запустить. Существует множество руководств, которые дадут вам базовую реализацию для создания простого плагина WordPress. А сейчас я познакомлю вас с некоторыми полезными функциями WordPress, которые помогут вам в правильном направлении.

На сайте viper007bond.com есть сообщение, в котором показан этот фрагмент кода:

 
 delete_post_meta() 

Хотя вам придется немного изменить этот фрагмент, чтобы он соответствовал вашей проблеме, его должно быть для вас хорошей отправной точкой.

После того, как вы подготовили список сообщений (который будет расположен в $some_posts), вы можете просмотреть каждое из этих сообщений и запустить функцию WordPress. $allposts = get_posts('numberposts=-1&post_type=post&post_status=any'); .

псевдопример:

foreach $post in $some_post loop{ delete_post_meta($post->ID, '_thumbnail_id'); }

Если по какой-то причине вы не хотите использовать фильтры, вы можете просто вернуть все свои сообщения, используя delete_post_meta() loop through all of those results comparing the date to the date you want. Once you've found the a post with the date your looking for run the <?php function last_thirty_days( $where = '' ){ global $wpdb; $where .= $wpdb->prepare(" AND post_date > %s", date( 'Y-m-d', strtotime('-30 days')) return $where; } add_filter( 'posts_where', 'last_thirty_days'); $some_posts = get_posts( array( 'suppress_filters' => false) ); // Important to avoid modifying other queries remove_filter( 'post_where', 'last_thirty_days'); ?> об этом, как я уже упоминал ранее.

Надеюсь, это вам поможет!

Я настоятельно рекомендую этот плагин WordPress для быстрого тестирования PHP-кода: https://wordpress.org/plugins/wordpress-console/ Он не обновлялся FOREVER, но все еще работает, если вы не используете мультисайт.

 

Alexa75


Рег
03 May, 2020

Тем
80

Постов
192

Баллов
602
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно