私たちは、クライアントが標準のWordpressアップロードフォルダ(wp-content/upload-assets)以外のフォルダにファイルをアップロードできるカスタム投稿タイプを作成しました。これらのファイルは、標準のwp-コンテンツ/アップロードフォルダから別々に扱われるべきであり、我々はのwp-config.phpの中Wordpressをwp_delete_attachmentにすると、あらかじめ定義されたカスタムフォルダからファイルが削除されます
define('UPLOADS', 'mycustomfolder');
を使用することができない理由です。我々は一時的にアップロードを変更するためにこれを使用する代わりに
はするフォルダWP-コンテンツ/アップロード-資産:
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-コンテンツ/アップロード-資産フォルダ内のファイルを削除するのですか?
最初に動作するはずです願っています。 – Erevald
@Ervald - うん。確かにカスタムフォルダに! –
そのフォルダへの正しいアクセス許可はデフォルトと同じですか? – Erevald