Вопрос или проблема
Я использую wp_handle_upload
для загрузки файлов из файла шаблона темы.
if ( ! function_exists('wp_handle_upload') ) require_once( ABSPATH . 'wp-admin/includes/file.php' );
$uploadedfile = $_FILES['attachedfile'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if ( $movefile ) {
//echo "File is valid, and was successfully uploaded.\n";
//var_dump( $movefile);
$attachedfilelink=$movefile['url'];
}
Я хочу создать папку внутри корневой директории /uploads с именем пользователя, который загружает файл, и загрузить файл в эту папку.
Кто-нибудь может помочь?
Это не рабочий пример, но он может помочь.
Используйте wp_upload_dir()
для определения стандартной папки uploads и добавьте к ней имя пользователя с помощью wp_get_current_user
.
$wp_upload_dir = wp_upload_dir();
$user_folder = wp_get_current_user();
// Фактическая папка
$custom_upload_folder= $wp_upload_dir['basedir'] . $user_folder->display_name;
//создать директорию
mkdir($custom_upload_folder);
Необходимо применять меры безопасности и код, который проверяет ошибки/возможности пользователя и устанавливает правильные разрешения на файлы/папки. Также посмотрите https://codex.wordpress.org/Filesystem_API, где используется mkdir
.
Ответ или решение
Для создания нового каталога и загрузки файлов в пользовательскую папку с использованием wp_handle_upload
, вы можете следовать следующей пошаговой инструкции. В этом руководстве мы рассмотрим создание папки внутри директории загрузок на основании имени пользователя и загрузку файла в эту папку.
Шаги для реализации
-
Получение пути к директории загрузок:
Используем функцию
wp_upload_dir()
для получения пути к стандартной папке загрузок WordPress.$wp_upload_dir = wp_upload_dir();
-
Получение текущего пользователя:
Используем функцию
wp_get_current_user()
, чтобы получить объект текущего пользователя и извлечь его имя.$user = wp_get_current_user(); $user_folder = $user->user_login;
-
Создание пользовательской папки:
Объединяем полученные данные, чтобы сформировать путь к новой папке. Проверяем, существует ли папка, и создаем ее с нужными правами доступа.
$custom_upload_dir = $wp_upload_dir['basedir'] . '/' . $user_folder; if (!file_exists($custom_upload_dir)) { wp_mkdir_p($custom_upload_dir); }
Использование
wp_mkdir_p()
предпочтительнее, так как оно автоматически справляется с рекурсивным созданием директорий и правильной установкой прав доступа. -
Загрузка файла в пользовательскую папку:
Настраиваем путь для загрузки файла в пользовательскую папку, используя
wp_handle_upload
.$uploadedfile = $_FILES['attachedfile']; $upload_overrides = array('test_form' => false); $movefile = wp_handle_upload($uploadedfile, [ 'test_form' => false, 'upload_dir' => function($dir) use ($custom_upload_dir) { $dir['basedir'] = $custom_upload_dir; $dir['path'] = $custom_upload_dir; $dir['url'] = $wp_upload_dir['baseurl'] . '/' . basename($custom_upload_dir); return $dir; } ]); if ($movefile && !isset($movefile['error'])) { echo "Файл был успешно загружен в: " . $movefile['url']; } else { echo "Ошибка загрузки файла: " . $movefile['error']; }
Важные моменты для рассмотрения
- Защита данных: Убедитесь, что пользователь имеет соответствующие права для загрузки файлов и создания директорий.
- Обработка ошибок: Выделите внимание обработке ошибок загрузки и созданию директорий.
- Безопасность: Избегайте использования пользовательского ввода напрямую без проверки и корректной обработки данных (например, переменных
_FILES
и_GET
).
Это решение оптимизировано для повышения удобства использования и безопасности при загрузке файлов. Имейте в виду, что при работе с файловой системой WordPress предостерегает пользователей от излишнего использования перезаписи файлов на сервере для избежания потенциальных угроз безопасности.
Оптимизация для поисковых систем
- Тема: Управление файлами в WordPress
- Ключевые слова:
wp_handle_upload
, пользовательская папка, загрузка файлов, WordPress - Описание: Узнайте, как создать пользовательскую папку и загрузить в нее файлы в WordPress с помощью
wp_handle_upload
, соблюдая лучшие практики безопасности.
Следуя этим шагам, вы создадите эффективную и безопасную систему загрузки файлов в WordPress, повышая удобство и функциональность вашего сайта.