Intereting Posts
Доступ к тиниме из толстого ящика Существует ли риск безопасности при использовании функции wp_signon? Некоторые связанные страницы работают, только если пользователь обновляется вызывать пользовательское действие после удаления учетной записи Как переписать URL-адрес для использования% taxonomy% вместо% category% при наличии нескольких таксономий? Почему использование __construct вместо widget_class_name при создании виджета запускает из памяти ошибку Можно ли добавить пользовательскую бизнес-логику на страницу редактирования пользовательского почтового администратора? Добавить логотип в меню администратора в моем плагине Как предотвратить экранирование при сохранении кода HTML в значение параметра? Папка загрузки мультимедиа – как управлять Назначить класс первому элементу в категории в цикле Создание перевода строк с помощью html в нем Имеет ли WordPress что-то вроде типа контента? Как создать 2 кнопки предварительного просмотра в сообщении? Создать страницу для отправки формы

wp_delete_attachment не удаляет изображения в wp-content / uploads /

Моя функция позволяет пользователям удалять свои загруженные изображения в интерфейсе. Однако они удаляются только в Media Library. Это означает, что они все еще находятся в wp-content / uploads /.

public static function removePhoto($ID, $attachment) { if(isset(self::$data['user']['photos'][$attachment])) { unset(self::$data['user']['photos'][$attachment]); wp_delete_attachment($attachment); core:updateUserMeta($ID, 'photos', self::$data['user']['photos']); } } 

Вот как добавляются изображения:

 public static function uploadImage($file) { require_once(ABSPATH.'wp-admin/includes/image.php'); $attachment=array('ID' => 0); if(JBSUser::$data['user']['membership']['photos']<=0) { JBSInterface::$messages[]=__('You have exceeded the number of photos', 'epic'); return $file; 

}

  if(!empty($file['name'])) { $uploads=wp_upload_dir(); $filetype=wp_check_filetype($file['name'], null); $filename=wp_unique_filename($uploads['path'], 'image-1.'.$filetype['ext']); $filepath=$uploads['path'].'/'.$filename; //validate file if (!in_array($filetype['ext'], array('jpg', 'JPG', 'jpeg', 'JPEG', 'png', 'PNG'))) { JBSInterface::$messages[]=__('Only JPG and PNG images are allowed.', 'epic'); } else if(move_uploaded_file($file['tmp_name'], $filepath)) { //upload image $attachment=array( 'guid' => $uploads['url'].'/'.$filename, 'post_mime_type' => $filetype['type'], 'post_title' => sanitize_title(current(explode('.', $filename))), 'post_content' => '', 'post_status' => 'inherit', 'post_author' => get_current_user_id(), ); //add image $attachment['ID']=wp_insert_attachment($attachment, $attachment['guid'], 0); update_post_meta($attachment['ID'], '_wp_attached_file', substr($uploads['subdir'], 1).'/'.$filename); //add thumbnails $metadata=wp_generate_attachment_metadata($attachment['ID'], $filepath); wp_update_attachment_metadata($attachment['ID'], $metadata); } else { JBSInterface::$messages[]=__('This image is too large for uploading.','epic'); } } return $attachment; } 

Обновление: настройка wp_delete_attachment, true – не работает.

Я подозреваю: substr ($ uploads ['subdir'], 1). '/'. $ Filename); Который, кажется, загружает файлы в подпапку. Но изображения по-прежнему загружаются в wp-content / uploads / независимо от того, включена ли настройка «организовать».

Должно ли это действительно повлиять на wp_delete_attachment?

Solutions Collecting From Web of "wp_delete_attachment не удаляет изображения в wp-content / uploads /"

Вам необходимо предоставить wp_delete_attachment значение true для второго аргумента force_delete . Ваш код должен быть изменен на wp_delete_attachment( $attachment, true );

Вы забыли добавить второй параметр для функции wp_delete_attachment

  <?php wp_delete_attachment( $attachmentid, $force_delete ); ?> 

$ вложения
(целое число) (обязательно) ID вложения, которое вы хотите удалить.
По умолчанию: нет

$ force_delete (bool) (необязательно) Следует ли обходить удаление мусора и силы (добавлено в WordPress 2.9).
По умолчанию: false