Программная загрузка файлов в WordPress
Недавно я работал над проектом, в котором мы хотели загрузить изображения в настраиваемую папку. Мы не хотим использовать стандартную структуру загрузки WordPress, в которой все ваши изображения хранятся в формате год-месяц. Вместо этого мы хотели создать нашу собственную папку внутри каталога «uploads» и хранить в ней изображения. Мне нужно написать программу, которая может загружать файлы через HTML-форму.
В этой статье мы изучаем, как программно загружать файлы в WordPress. Я покажу вам два способа выполнения этой задачи. Один использует встроенную функцию wp_upload_bits(), а другой использует метод move_uploaded_file ().
Программная загрузка файлов в WordPress
Для начала создайте простую HTML-форму с вводом файла и кнопкой отправки. Вы можете разместить эту форму на своей странице или в публикации.
<h2>Upload a File</h2>
<form method="post" enctype="multipart/form-data">
<input type="file" name="file" required />
<input type="submit" name="upload_file" value="Upload" />
</form>
Загрузить файл с помощью wp_upload_bits
Используя wp_upload_bits()
функцию, ваш файл будет храниться в каталоге загрузок. Вы найдете свой файл в папке месяца текущего года (например, wp-content / uploads / 2020-> 03-> your_file). Эта функция не перемещает просматриваемый файл в папку загрузки. Вместо этого он создаст новый файл с содержимым файлов. Использовать этот метод просто. Добавьте в свой functions.php
файл следующий код.
<?php
function fn_upload_file() {
if (isset($_POST['upload_file'])) {
$upload = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']);
// save into database $upload['url]
}
}
add_action('init', 'fn_upload_file');
Если вы распечатаете $upload
переменную, вы получите массив, который содержит каталог и URL-путь загруженного файла. Пользователь может сохранить URL-путь в базе данных с помощью $upload['url]
.
Загрузить файл в настраиваемый каталог
Как упоминалось выше, при использовании wp_upload_bits()
метода ваши файлы будут храниться с использованием иерархии папок WordPress по умолчанию. Но что, если вы хотите хранить файлы в своем собственном каталоге?
В этом случае вам необходимо создать собственную папку в каталоге «uploads» и переместить файл в эту папку. Допустим, вы хотите хранить свои файлы в каталоге uploads / product-images. В приведенном ниже коде мы создадим среду выполнения папки product-images и будем хранить в ней файлы. Этот код вы также можете записать в functions.php
файл.
function fn_upload_file() {
if (isset($_POST['upload_file'])) {
$upload_dir = wp_upload_dir();
if (! empty( $upload_dir['basedir'])) {
$user_dirname = $upload_dir['basedir'].'/product-images';
if (! file_exists( $user_dirname)) {
wp_mkdir_p( $user_dirname );
}
$filename = wp_unique_filename( $user_dirname, $_FILES['file']['name'] );
move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'/'. $filename);
// save into database $upload_dir['baseurl'].'/product-images/'.$filename;
}
}
}
add_action('init', 'fn_upload_file');
Здесь я использую метод wp_unique_filename (), который дает уникальное имя файла для данного каталога.
Это оно! Все дело в том, как программно загружать файлы в WordPress. Используете ли вы какой-либо другой метод для подобной задачи? Пожалуйста, поделитесь в разделе комментариев ниже.
Статьи по Теме
- Как использовать метод wp_get_image_editor для изменения размера ваших изображений в WordPress
- Как зарегистрировать нестандартные размеры изображений и изменить размер существующих изображений в WordPress
- Как программно установить избранные изображения в WordPress