Abbiamo creato un tipo di messaggio personalizzato che consente al nostro client di caricare file in una cartella al di fuori della cartella standard di upload di Wordpress (wp-content/upload-assets). Questi file devono essere gestite separatamente dalla cartella standard wp-content/uploads ed è per questo che non possiamo usareRendi Wordpress wp_delete_attachment elimina i file da una cartella personalizzata predefinita
define('UPLOADS', 'mycustomfolder');
nel wp-config.php.
Invece usiamo questo per modificare temporaneamente gli upload cartella wp-content/Carica-assets:
add_filter('upload_dir', 'my_upload_dir');
$uploaded_file = wp_handle_upload($_FILES['xxxx_image'], $upload_overrides);
remove_filter('upload_dir', 'my_upload_dir');
Stiamo usando questo per rimuovere tutti gli allegati da un posto particolare:
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 dovrebbe anche cancellare tutti i file associati dal disco ma non funziona perché i nostri file sono nella nostra cartella personalizzata (wp-content/upload-assets).
Ecco il codice per la nostra funzione 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;
}
come facciamo wp_delete_attachment rimuovere i file nella nostra cartella wp-content/upload personalizzati-asset?
In primo luogo dare un'occhiata gli allegati GUID se sono davvero nella cartella personalizzata. – Erevald
@Ervald - Sì. Sicuramente nella cartella personalizzata! –
Avete i permessi giusti per quella cartella come quelli di default? – Erevald