Создайте новую папку и загрузите файлы в пользовательскую папку через wp_handle_upload.

Вопрос или проблема

Я использую 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, вы можете следовать следующей пошаговой инструкции. В этом руководстве мы рассмотрим создание папки внутри директории загрузок на основании имени пользователя и загрузку файла в эту папку.

Шаги для реализации

  1. Получение пути к директории загрузок:

    Используем функцию wp_upload_dir() для получения пути к стандартной папке загрузок WordPress.

    $wp_upload_dir = wp_upload_dir();
  2. Получение текущего пользователя:

    Используем функцию wp_get_current_user(), чтобы получить объект текущего пользователя и извлечь его имя.

    $user = wp_get_current_user();
    $user_folder = $user->user_login;
  3. Создание пользовательской папки:

    Объединяем полученные данные, чтобы сформировать путь к новой папке. Проверяем, существует ли папка, и создаем ее с нужными правами доступа.

    $custom_upload_dir = $wp_upload_dir['basedir'] . '/' . $user_folder;
    
    if (!file_exists($custom_upload_dir)) {
       wp_mkdir_p($custom_upload_dir);
    }

    Использование wp_mkdir_p() предпочтительнее, так как оно автоматически справляется с рекурсивным созданием директорий и правильной установкой прав доступа.

  4. Загрузка файла в пользовательскую папку:

    Настраиваем путь для загрузки файла в пользовательскую папку, используя 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, повышая удобство и функциональность вашего сайта.

Оцените материал
Добавить комментарий

Капча загружается...