Каким образом можно найти и удалить дубликаты изображений из сообщений и медиа-библиотеки?

Я только что экспортировал довольно большой блог WP из MediaTemple в PHPFog.

Я использовал стандартные плагины экспорта и импорта WordPress.

По какой-то неизвестной причине все мои медиа-активы были дублированы. У меня в два раза больше изображений за сообщение.

Если исходный файл был назван «Lot-44-Warrens.jpg», теперь он имеет дубликат под названием «Lot-44-Warrens1.jpg». Оба файла прикреплены к тому же сообщению.

Теперь у меня много дубликатов изображений на более чем 250 + сообщениях.

Итак, мой вопрос заключается в том, как удалить указанные дубликаты из медиа-библиотеки и из сообщений?

Я попытался выполнить поиск в медиа-библиотеке с помощью «* 1.jpg», но это не сработало.

Ищете четкое решение, которое не означает, что нужно удалить каждый дубликат вручную.

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

Данный сайт: http://igrealty.phpfogapp.com/.

6 голосов | спросил jnthnclrk 20 PMpFri, 20 Apr 2012 20:01:39 +040001Friday 2012, 20:01:39

3 ответа


2

Объединив два ответа на этой странице, я нашел, что это сработало.

$args = new WP_Query(array(
  'post_type' => 'post',
  'posts_per_page' => -1
));

$loop = new WP_Query($args);

while($loop->have_posts()) {
  the_post();
  $args2 = array(
    'order' => 'ASC',
    'post_type' => 'attachment',
    'post_parent' => $post->ID,
    'post_mime_type' => 'image');
    $attachments = get_posts($args2);
    if($attachments) {
      foreach ($attachments as $img_post) {
        if( ((strpos($img_post->guid, '1.jpg')!== false) || (strpos($img_post->guid, '1.gif')!== false) || (strpos($img_post->guid, '1.png')!== false))){
          $stuff = $img_post->guid;
          wp_delete_attachment($img_post->ID);
        } 
      }
    }
} wp_reset_postdata();
ответил UzumakiDev 11 MarpmTue, 11 Mar 2014 16:14:00 +04002014-03-11T16:14:00+04:0004 2014, 16:14:00
4

Используйте сценарий run-once для его очистки. Просто контур, нет кода:

  1. Получить все сообщения. См. get_posts( array ( 'numberposts' => -1 ) )
  2. Для каждого сообщения есть все вложения. См. get_children( array ( 'post_type' => 'attachment', 'numberposts' => -1 ) )
  3. Для каждого вложения получите URL-адрес вложения. См. wp_get_attachment_url()
  4. Если вы находите URL-адрес приложения в содержимом родительского сообщения ($post->post_content):
    • Если есть другой URL-адрес вложений с тем же именем файла плюс 1 и
    • оба являются частью содержимого сообщения, затем
    • сначала удалите второе изображение, затем
    • используйте wp_delete_attachment() , чтобы удалить физический файл. Это также удалит все метаданные и все ассоциации в других сообщениях. Это лучший способ удалить прикрепленные файлы (imho).

Это может занять некоторое время. Проверьте его на локальной копии вашего сайта. Возможно, вам нужно запустить процесс с шагом 50 сообщений ('numberposts' => 50).

ответил fuxia 23 PMpMon, 23 Apr 2012 23:35:35 +040035Monday 2012, 23:35:35
0

Вчера я узнаю ценный урок, если приложение не предоставляет вам адекватных функций для поиска и удаления активов из базы данных, и вы пытаетесь найти дубликаты на нескольких, часто уникальных полях, не знаете, как создавать сложные MySQL-запросы; то лучше всего вернуться к основам.

В конце концов, я экспортировал таблицы с обломоками в Excel, отфильтровал их, создав собственный «хеш» значимых полей (выполнение этого в MySQL было сложным и несколько раз разбило сервер) и обрезало набор данных так, чтобы Я создал список идентификаторов, которые были абсолютно уверены, что я хочу удалить. Затем я построил гораздо более простой MySQL-запрос для удаления каждой строки по идентификатору.

Этот метод работал отлично, потому что я мог медленно принимать меры и рассматривать каждый фильтр Excel, который я применил. Таким образом, я был гораздо увереннее, что я удалял правильные записи. У меня также есть точная запись в Excel, что именно я удалил.

ответил jnthnclrk 24 PMpTue, 24 Apr 2012 15:02:29 +040002Tuesday 2012, 15:02:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132