Intereting Posts
Как получить только заголовок из wp_get_attachment_image Как удалить действие строки «Редактировать с помощью Visual Composer» в таблице списка сообщений? Не удалось добавить символ TAB для публикации? Вставка фрагмента кода PHP с помощью короткого кода Установите расписание липких сообщений (автоматическое) Оптимизировать запрос персонализированного запроса WP bbPress или WordPress + плагин форума? переписать правило для перенаправления на последнюю дату permalink Как установить категорию предустановок для пользовательских типов сообщений? Как иметь дело с переменной GET 'name'? Shortcode в выражении $ output отправка данных из формы в определенную строку в код Java Экран редактирования настраиваемого типа сообщений показывает все типы сообщений, независимо от типа сообщения по URL-адресу Использование разных nav_menu_css_class для разных nav_walkers Использование категорий на панели навигации вместо страниц

Как я могу удалить все неприкрепленные изображения с помощью WP-CLI или другого автоматизированного процесса?

После использования WPML Media, плагина, который создает дубликаты каждого изображения для каждого языка, теперь у нас есть почти 100 000 дубликатов изображений, которые мы не собираемся использовать, и вам нужно избавиться.

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

Я ищу решение WP-CLI, если это возможно. Это решение было очень полезно, но оно делает все изображения, а не только те, которые не подключены / не используются в системе.

Как я могу массово удалять носители и вложения с помощью WP-CLI?

Учитывая другое решение, OP поставил комментарии, что в конечном итоге достиг своего решения с помощью SQL.

Как удалить тысячи несвязанных изображений?

Я не чужой командной строке или mysql, но недостаточно знаком с таблицами WP, чтобы создать запрос для поддержания целостности базы данных. Если да, то, пожалуйста, предложите чистое решение, связанное с базой данных, или скрипт PHP, который будет подключаться к системе и делать что-то «wordpress».

Я не ищу решение на основе плагинов. Я попробовал DNUI, DX Delete Attached Media и множество других, которые все закончились плохо.

ОБНОВЛЕНИЕ: использование «parent = 0», чтобы определить, прикреплено ли изображение или нет, было очень умным решением, и я обозначил его как ответ.

Существует способ законного использования изображения в сообщении, а родительский элемент все равно равен 0; это когда вы просматриваете детали изображения в медиа-библиотеке и копируете URL-адрес исходного изображения, который нужно вставить вручную в сообщение. Решение принятого ответа также удалит их. Из-за этого я хотел бы также поощрять другие решения, которые учитывали бы это.

Возможно, это потребует сканирования базы данных, чтобы найти экземпляры имени изображения, возможно, похожие на алгоритм wp-cli search-replace будет использовать?

Вы можете попробовать эту (непроверенную) модификацию для ответа, связанного с @something

wp post delete $(wp post list --post_type='attachment' --format=ids --post_parent=0) 

для удаления вложений без родителей .

Чтобы настроить целевой mime type , например, image/jpeg try:

 wp post delete $(wp post list --post_type='attachment' \ --format=ids --post_parent=0 --post_mime_type='image/jpeg') 

Заметки:

  • Не забудьте сделать резервную копию перед тестированием!

  • Непривязанные изображения могут по-прежнему использоваться в сообщении или, например, в виджетах.