gpt4 book ai didi

php - 使 Wordpress wp_delete_attachment 从预定义的自定义文件夹中删除文件

转载 作者:IT王子 更新时间:2023-10-29 00:03:57 26 4
gpt4 key购买 nike

我们创建了一个自定义帖子类型,它允许我们的客户将文件上传到标准 Wordpress 上传文件夹 (wp-content/upload-assets) 之外的文件夹。这些文件将与标准 wp-content/uploads 文件夹分开处理,这就是我们不能使用

的原因
define( 'UPLOADS', 'mycustomfolder' );

在 wp-config.php 中。

我们使用它来临时将上传文件夹更改为 wp-content/upload-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');

我们正在使用它来删除特定帖子中的所有附件:

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/upload-assets 文件夹中的文件?

最佳答案

您好,如果要删除文件,您可以这样做,但它不会删除与附件关联的所有帖子元字段、分类、评论等。

希望有帮助

foreach ( $attachments as $attachment ) {
if ( false === wp_delete_attachment( $attachment->ID, true ) ) {
$file = get_attached_file( $attachment->ID );
$file = str_replace( "uploads", "upload-assets", $file);
wp_delete_file( $file );
}
}

我没有测试过这段代码,但我希望它能工作

关于php - 使 Wordpress wp_delete_attachment 从预定义的自定义文件夹中删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38117115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com