Загрузка файла WordPress программно: 3 практических способа
Опубликовано: 2022-10-20По умолчанию WordPress поддерживает загрузку файлов через свою медиатеку или экран редактирования сообщений. Когда вы загружаете файлы на свой веб-сайт с помощью этих встроенных функций, WordPress делает все за вас. Это позволяет вам просматривать все загруженные файлы и вставлять их в свои сообщения или страницы.
Однако вам нужно больше, когда речь идет о пользовательских функциях, таких как загрузка файлов через интерфейс. Существует множество доступных плагинов, которые помогут вам добавлять, изменять и управлять файлами без корректировки кода. Конечно, большинство из них требуют оплаты.
Если вы не хотите платить за плагины, решением может стать программная загрузка файлов на ваш сайт WordPress. В этой статье мы подробно расскажем, как этого добиться.
Давайте начнем!
- Небольшое уведомление
- # 1 Загружайте файлы в медиатеку программно с URL-адресов
- #2 Добавление файлов через HTML-форму
- #3 Программная вставка файлов в пользовательскую галерею
- Бонусный совет: защитите загружаемые файлы
Небольшое уведомление
Этот метод в основном мешает коду. Поэтому, пожалуйста, соглашайтесь на эту технику, только если у вас есть некоторые знания в области кодирования. В противном случае весь ваш сайт может рухнуть из-за одного небольшого неправильного изменения.
Если вы только начали работать с WordPress, мы настоятельно рекомендуем использовать плагин Gravity Forms для загрузки файлов внешнего интерфейса. Или ознакомьтесь с 5 лучшими плагинами для загрузки файлов внешнего интерфейса WordPress. Вы также можете использовать FTP-клиент для загрузки файлов из бэкэнда.
Тем не менее, хотите узнать, как программно загружать файлы в WordPress? Продолжай читать!
# 1 Загружайте файлы в медиатеку программно с URL-адресов
Вы просматриваете Интернет и находите отличные изображения, которые хотите загрузить в свою медиатеку WordPress. Вот как это сделать:
- Скопируйте URL-адрес изображения.
- Вставьте приведенный ниже код на свой сайт и вставьте скопированный 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-форму:
- Вставьте следующий код, чтобы создать простую 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) ;
Следовательно, когда вы просматриваете сообщение на странице редактирования сообщения в бэкэнде, вы увидите все загруженные фотографии. Однако эти изображения не будут отображаться в слайд-шоу во внешнем интерфейсе, пока вы не нажмете « Обновить » во внутреннем интерфейсе.
Итак, как вы можете программно нажать кнопку « Обновить » после создания галереи? Просто следуйте инструкциям ниже:
- После обновления галереи сообщений добавьте этот код, чтобы программно выбрать кнопку « Обновить »:
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. Знаете ли вы какие-либо другие методы? Пожалуйста, поделитесь с нами в разделе комментариев ниже.