Загрузка файла WordPress программно: 3 практических способа

Опубликовано: 2022-10-20

По умолчанию WordPress поддерживает загрузку файлов через свою медиатеку или экран редактирования сообщений. Когда вы загружаете файлы на свой веб-сайт с помощью этих встроенных функций, WordPress делает все за вас. Это позволяет вам просматривать все загруженные файлы и вставлять их в свои сообщения или страницы.

Однако вам нужно больше, когда речь идет о пользовательских функциях, таких как загрузка файлов через интерфейс. Существует множество доступных плагинов, которые помогут вам добавлять, изменять и управлять файлами без корректировки кода. Конечно, большинство из них требуют оплаты.

Если вы не хотите платить за плагины, решением может стать программная загрузка файлов на ваш сайт WordPress. В этой статье мы подробно расскажем, как этого добиться.

Давайте начнем!

  • Небольшое уведомление
  • # 1 Загружайте файлы в медиатеку программно с URL-адресов
  • #2 Добавление файлов через HTML-форму
  • #3 Программная вставка файлов в пользовательскую галерею
  • Бонусный совет: защитите загружаемые файлы

Небольшое уведомление

Этот метод в основном мешает коду. Поэтому, пожалуйста, соглашайтесь на эту технику, только если у вас есть некоторые знания в области кодирования. В противном случае весь ваш сайт может рухнуть из-за одного небольшого неправильного изменения.

Если вы только начали работать с WordPress, мы настоятельно рекомендуем использовать плагин Gravity Forms для загрузки файлов внешнего интерфейса. Или ознакомьтесь с 5 лучшими плагинами для загрузки файлов внешнего интерфейса WordPress. Вы также можете использовать FTP-клиент для загрузки файлов из бэкэнда.

Тем не менее, хотите узнать, как программно загружать файлы в WordPress? Продолжай читать!

# 1 Загружайте файлы в медиатеку программно с URL-адресов

Вы просматриваете Интернет и находите отличные изображения, которые хотите загрузить в свою медиатеку WordPress. Вот как это сделать:

  1. Скопируйте URL-адрес изображения.
  2. Вставьте приведенный ниже код на свой сайт и вставьте скопированный URL:
 /**
* Загружать изображение с URL-адреса программно
*
* @author Миша Рудрастых
* @link https://rudrastyh.com/wordpress/how-to-add-images-to-media-library-from-uploaded-files-programmatically.html#upload-image-from-url
*/
функция rudr_upload_file_by_url( $image_url ) {

// это позволяет нам использовать функции download_url() и wp_handle_sideload()
require_once(ABSPATH. 'wp-admin/includes/file.php');

// загрузить во временный каталог

$temp_file = download_url($image_url);

если ( is_wp_error ( $ temp_file )) {
вернуть ложь;
}

// перемещаем временный файл в папку для загрузки
$ файл = массив (
'имя' => базовое имя ( $ image_url ),
'тип' => mime_content_type($temp_file),
'tmp_name' => $temp_file,
'размер' => размер файла ($ temp_file),
);
$боковая загрузка = wp_handle_sideload(
$ файл,
множество(
'test_form' => false // нет необходимости проверять параметр action
)
);

если( ! пусто( $sideload[ 'ошибка' ] ) ) {
// вы можете вернуть сообщение об ошибке, если хотите
вернуть ложь;
}

// пришло время добавить наше загруженное изображение в медиатеку WordPress
$attachment_id = wp_insert_attachment(
множество(
'guid' => $sideload[ 'url' ],
'post_mime_type' => $sideload[ 'тип'],
'post_title' => базовое имя ($sideload['file']),
'post_content' => '',
'post_status' => 'наследовать',
),
$sideload[ 'файл' ]
);

if( is_wp_error( $attachment_id ) || ! $attachment_id ) {
вернуть ложь;
}

// обновить метаданные, восстановить размеры изображения
require_once(ABSPATH. 'wp-admin/includes/image.php');

wp_update_attachment_metadata(
$attachment_id,
wp_generate_attachment_metadata($attachment_id, $sideload['файл'])
);

вернуть $attachment_id;
}

Вот и все!

#2 Добавление файлов через HTML-форму

Второй метод заключается в создании простой HTML-формы с вводом файла и кнопкой отправки. Вы можете разместить эту форму на любой странице или записи, что позволит пользователям загружать файлы на ваш сайт. Выполните следующие шаги для программной загрузки файлов в WordPress через HTML-форму:

  1. Вставьте следующий код, чтобы создать простую HTML-форму:
 1 <h2>Загрузить файл</h2>
2 <form method="post" enctype="multipart/form-data">
3 <input type="file" name="file" требуется />
4 <input type="submit" name="upload_file" value="Upload" />
5 </форма>

Используя функцию wp_upload_bits() , WordPress автоматически сохранит загруженные вами файлы в каталоге загрузки . Вы можете найти свои файлы в папке текущего года-месяца, например, wp-content/uploads/2020->03->your_file .

2. Вставьте этот код в файл functions.php :

 1 <?php
2 функция fn_upload_file() {
3 если ( isset($_POST['upload_file'])) {
4 $upload = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']);
5 // сохранить в базу данных $upload['url]
6 }
7 }
8 add_action('init', 'fn_upload_file');

Если вы напечатаете переменную $upload , вы получите массив, содержащий каталог и URL-адреса загруженных файлов. Пользователи могут найти и сохранить эти URL-адреса в базе данных, используя $upload['url] .

Как упоминалось выше, после использования метода wp_upload_bits() ваши файлы будут храниться в иерархии папок WordPress по умолчанию. Но что, если вы хотите сохранить файлы в своем собственном каталоге?

В этой ситуации вам следует создать пользовательскую папку в каталоге загрузки и переместить в нее файлы. Допустим, вы хотите хранить свои файлы в каталоге uploads/product-images . С помощью приведенного ниже кода вы можете создать папку product-images и хранить в ней файлы.

Напишите код в файл functions.php :

 1 функция fn_upload_file() {
2 если ( isset($_POST['upload_file'])) {
3 $upload_dir = wp_upload_dir();
4
5 если ( ! пусто ($upload_dir['основанный_каталог'] )) {
6 $user_dirname = $upload_dir['basedir'].'/product-images';
7 если ( ! file_exists( $user_dirname )) {
8 wp_mkdir_p($user_dirname);
9 }
10
11 $filename = wp_unique_filename($user_dirname, $_FILES['file']['name'] );
12 move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'/'. $filename);
13 // сохранить в базу данных $upload_dir['baseurl'].'/product-images/'.$filename;
14 }
15 }
16 }
17 add_action('init', 'fn_upload_file');

Здесь мы применяем метод wp_unique_filename() , чтобы присвоить уникальное имя файла данному каталогу.

#3 Программная вставка файлов в пользовательскую галерею

Предположим, что у вас есть галерея, добавленная в качестве пользовательского метаполя под названием «галерея». Вы загружаете множество изображений через media_sideload_image() . Затем сериализуйте их идентификаторы и вставьте их в галерею с помощью update_post_meta($post_id, 'gallery', $serialized) ;

Следовательно, когда вы просматриваете сообщение на странице редактирования сообщения в бэкэнде, вы увидите все загруженные фотографии. Однако эти изображения не будут отображаться в слайд-шоу во внешнем интерфейсе, пока вы не нажмете « Обновить » во внутреннем интерфейсе.

Итак, как вы можете программно нажать кнопку « Обновить » после создания галереи? Просто следуйте инструкциям ниже:

  1. После обновления галереи сообщений добавьте этот код, чтобы программно выбрать кнопку « Обновить »:
 wp_update_post(['ID'=>$post_id]);

2. Обновите кеш, чтобы использовать функции поиска и фильтрации:

 do_action('search_filter_update_post_cache', $post_id);

Бонусный совет: защитите загружаемые файлы

Есть ли способы предотвратить несанкционированный доступ к вашим загруженным файлам? Ответ положительный. Для получения дополнительной информации, пожалуйста, обратитесь к нашему подробному руководству по 21 полезному приему .htaccess для защиты файлов WordPress. Поскольку .htaccess является важным файлом, обеспечивающим бесперебойную работу вашего сайта, будьте осторожны при внесении любых изменений.

С другой стороны, установите плагин PDA Gold, если вы не уверены в своих навыках программирования. Это поможет вам справиться с проблемами, не беспокоясь о повреждении файла .htaccess.

Еще один заслуживающий внимания метод — защитить файлы WordPress паролем. Ознакомьтесь с нашей статьей для более подробной информации.

Загружайте файлы программно в WordPress как эксперт!

Мы показали вам 3 способа программной загрузки файлов в WordPress. Теперь вы можете легко загружать файлы в медиатеку или через HTML-форму загрузки файлов. Также возможно добавлять файлы в вашу пользовательскую галерею. И самое главное, не забудьте защитить свои файлы WordPress с помощью кода или установки плагинов.

Это все о том, как программно загружать файлы в WordPress. Знаете ли вы какие-либо другие методы? Пожалуйста, поделитесь с нами в разделе комментариев ниже.