Löschen von Bildern über den Upload-Ordner, jedoch nicht aus der Medienbibliothek löschen

Ich habe ein Plugin geschrieben, mit dem ein Benutzer eine ZIP-Datei hochladen kann. Wenn sich diese Datei bereits im Upload-Ordner befindet, löscht sie den Inhalt, lädt die neue ZIP-Datei dort hoch und entpackt sie dann.

Das Plugin funktioniert und alles, aber ich merke, dass jedes Mal, wenn ich eine Datei hochlade, diese in der Medienbibliothek verbleibt, obwohl sie aus dem Upload-Ordner gelöscht wurde. Der Upload-Ordner könnte also leer sein, aber er wird immer noch in der Medienbibliothek angezeigt. Hier ist mein Code, um die Datei zu ersetzen:

//first, check if there's an existing directory if (file_exists($upload_dir . "PDF-archive")){ //if the directory exists, delete all the files inside $file_names = glob($upload_dir . "PDF-archive/*"); foreach ($file_names as $files){ if (is_file($files)){ unlink($files); } } } else { //if directory doesn't exist, create a new one $pdf_archive_dir = $temp['basedir']; $pdf_archive_dir = $pdf_archive_dir . '/PDF-archive'; wp_mkdir_p($pdf_archive_dir); } //directory is created and empty, now add files and unzip them rename($uploaded_file_path, $new_file_path); //move zip files into new directory unzip_zips($uploaded_file_name); //unzips the uploaded file } 

Ich gehe davon aus, dass die Medienbibliothek in der database gespeichert wird … Gibt es eine Möglichkeit, sicherzustellen, dass sie auch von dort gelöscht wird? Wie ich schon sagte, es funktioniert, aber der Client wird jeden Tag eine neue Zip-Datei hinzufügen, so dass ich vermeiden möchte, dass mehr als 50 Einträge in der Mediathek vorhanden sind, obwohl sie nicht im Upload-Ordner vorhanden sind.

Randnotiz: Ich bin ziemlich neu, wenn Sie Probleme mit meinem Code sehen, würde ich das Feedback schätzen. Vielen Dank!

Solutions Collecting From Web of "Löschen von Bildern über den Upload-Ordner, jedoch nicht aus der Medienbibliothek löschen"

WordPress speichert die Medienbibliothek in der Tabelle _posts – Sie sehen post_type des attachment für Medienbibliothekselemente. Sie werden einen guid Wert in der Zeile sehen, der die Standard-URL für Medienelemente ist.

Während Sie Ihre Datei entfernen, können Sie die vollständige URL der Datei erstellen. Verwenden Sie dann diese vollständige URL in einer einfachen databaseabfrage ( $wpdb ) mit der Angabe WHERE guid = '$thefullURL' . Dadurch wird die Zeile zurückgegeben und Sie können die ID des Medienbibliothekselements abrufen.

wp_delete_post() ID abgerufen wurde, kannst du sie mit wp_delete_post() WordPress löschen (was aus der Bibliothek und auch aus einem _postmeta Jargon _postmeta )