我們創建了一個自定義文章類型,允許我們的客戶端將文件上傳到標準Wordpress上傳文件夾(wp-content/upload-assets)之外的文件夾。這些文件是從標準的wp-content /上傳文件夾seperately處理,這就是爲什麼我們不能在wp-config.php文件使用讓Wordpress wp_delete_attachment從預定義的自定義文件夾中刪除文件
define('UPLOADS', 'mycustomfolder');
。
相反,我們利用這個臨時更改上傳文件夾到的wp-content /上傳資產:
add_filter('upload_dir', 'my_upload_dir');
$uploaded_file = wp_handle_upload($_FILES['xxxx_image'], $upload_overrides);
remove_filter('upload_dir', 'my_upload_dir');
我們正在使用這從某個帖子刪除所有附件:
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也應該從磁盤上刪除所有相關的文件,但它不起作用,因爲我們的文件在我們的自定義文件夾(wp-content/upload-assets)中。
下面是我們的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;
}
我們怎樣才能wp_delete_attachment刪除我們的自定義的wp-content /上傳資產文件夾中的文件?
首先看看的GUID附件,如果他們確實是在自定義文件夾。 – Erevald
@Ervald - 是的。自定義文件夾中! –
您是否擁有與默認相同的權限? – Erevald