Wir haben einen benutzerdefinierten Beitragstyp erstellt, der es unserem Kunden ermöglicht, Dateien in einen Ordner außerhalb des Standard-Wordpress-Upload-Ordners (wp-content/upload-assets) hochzuladen. Diese Dateien sind getrennt vom Standardordner wp-content/uploads zu behandeln und können daher NICHT verwendet werden
define( 'UPLOADS', 'mycustomfolder' );
in der wp-config.php.
Stattdessen verwenden wir dies, um den Uploads-Ordner vorübergehend in wp-content/upload-assets zu ändern:
add_filter('upload_dir', 'my_upload_dir');
$uploaded_file = wp_handle_upload($_FILES['xxxx_image'], $upload_overrides);
remove_filter('upload_dir', 'my_upload_dir');
Wir verwenden dies, um alle Anhänge von einem bestimmten Beitrag zu entfernen:
add_filter('upload_dir', 'my_upload_dir');
$attachments = get_posts( array(
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'any',
'post_parent' => $pid
) );
foreach ( $attachments as $attachment ) {
if ( false === wp_delete_attachment( $attachment->ID, true ) ) {
echo 'Attachment could not be deleted.';
}
}
remove_filter('upload_dir', 'my_upload_dir');
wp_delete_attachment sollte auch alle zugehörigen Dateien von der Festplatte löschen, aber es funktioniert nicht, weil sich unsere Dateien in unserem benutzerdefinierten Ordner (wp-content/upload-assets) befinden.
Hier ist der Code für unsere Funktion my_upload_dir:
function my_upload_dir($upload) {
$upload['subdir'] = '';
$upload['basedir'] = WP_CONTENT_DIR;
$upload['baseurl'] = WP_CONTENT_URL;
$upload['path'] = $upload['basedir'] . '/upload-assets';
$upload['url'] = $upload['baseurl'] . '/upload-assets';
return $upload;
}
Wie bringen wir wp_delete_attachment dazu, die Dateien in unserem benutzerdefinierten wp-content/upload-assets-Ordner zu entfernen?
Sehen Sie sich zuerst die Anhänge-Anleitung an, ob sie sich tatsächlich im benutzerdefinierten Ordner befinden.
– Stummel
30. Juni 2016 um 10:54 Uhr
@Ervald – Ja. Definitiv im benutzerdefinierten Ordner!
– Richard Tinkler
30. Juni 2016 um 11:17 Uhr
Haben Sie die richtigen Berechtigungen für diesen Ordner wie der Standard?
– Stummel
30. Juni 2016 um 11:23 Uhr
@Ervald – Ja. Ich kann manuell löschen, indem ich die Verknüpfung aufhebe, damit die Berechtigungen in Ordnung sind.
– Richard Tinkler
30. Juni 2016 um 12:05 Uhr
Habe das gleiche Problem… Konntest du eine Lösung finden?
– Swen
11. Januar 2018 um 11:44 Uhr