У меня есть функция, которая сохраняет изображения, загруженные пользователями, в отдельный каталог, отличный от каталога по умолчанию. В настоящее время изображения сохраняются в wp-contents/uploads/avatar-upload. Как я могу изменить этот путь?
На самом деле я хотел бы сохранить их вне папки загрузок, например, в wp-contents/avatar-upload.
Может ли кто-нибудь помочь мне и показать, как правильно это сделать?
// Save Avatar Action
function action_woocommerce_save_account_details( $user_id ) {
if ( isset( $_FILES['image'] ) ) {
require_once( ABSPATH . 'wp-admin/includes/image.php' );
require_once( ABSPATH . 'wp-admin/includes/file.php' );
require_once( ABSPATH . 'wp-admin/includes/media.php' );
// Set custom upload folder
function wp_set_custom_upload_folder($uploads) {
$uploads['path'] = $uploads['basedir'] . '/avatar-upload';
$uploads['url'] = $uploads['baseurl'] . '/avatar-upload';
if (!file_exists($uploads['path'])) {
mkdir($uploads['path'], 0755, true);
}
return $uploads;
}
add_filter('upload_dir', 'wp_set_custom_upload_folder');
$attachment_id = media_handle_upload( 'image', 0 );
if ( is_wp_error( $attachment_id ) ) {
update_user_meta( $user_id, 'image', $_FILES['image']['error'] . ": " . $attachment_id->get_error_message() );
} else {
$old_attachment_id = get_user_meta( $user_id, 'image', true );
wp_delete_attachment($old_attachment_id);
update_user_meta( $user_id, 'image', $attachment_id );
}
remove_filter('upload_dir', 'wp_set_custom_upload_folder');
}
}
add_action( 'woocommerce_save_account_details', 'action_woocommerce_save_account_details', 10, 1 );