Работа с PDF файлами — частая задача для сайтов на WordPress, особенно если нужно регулярно загружать и отображать документы, инструкции или отчёты. В этой статье рассмотрим, как автоматизировать процесс импорта PDF файлов в WordPress, чтобы экономить время и избежать рутинных операций.
Почему нужен автоматический импорт PDF в WordPress
Загрузка PDF вручную через админку — несложная, но утомительная задача, если файлов много и нужно обновлять их часто. Автоматизация позволяет:
- Автоматически загружать новые PDF с внешних источников (FTP, URL, облако);
- Автоматически создавать записи или вложения с этими файлами;
- Экономить время и исключать ошибки при ручном добавлении;
- Обеспечивать постоянное обновление контента без участия человека.
Для реализации подойдёт как готовый плагин, так и кастомное решение с использованием PHP и WP Cron.
Плагины для автоматического импорта PDF файлов в WordPress
1. WP All Import + дополнение для медиа
WP All Import — мощный инструмент для импорта данных из CSV, XML с возможностью автоматической загрузки файлов, в том числе PDF, и их прикрепления к постам.
Для работы с PDF понадобится платное дополнение WP All Import - Media Add-On, которое позволяет автоматически загружать файлы из URL в медиабиблиотеку и прикреплять к посту.
Преимущество — гибкость, возможность импортировать с любой структурой данных и создавать кастомные посты с PDF.
2. Auto Upload Images
Этот бесплатный плагин автоматически загружает изображения, но его можно доработать под PDF (с помощью фильтров и хуков), если PDF вставляются в контент через URL.
Но для PDF лучше использовать специализированные решения, чтобы файлы попадали в медиабиблиотеку и были доступны для скачивания.
Кастомное решение: как создать автоматический импорт PDF с URL
Рассмотрим пример кода, который загружает PDF из внешнего URL, сохраняет в медиабиблиотеку и создаёт пост с прикреплённым файлом.
function wpdownload_import_pdf_from_url($pdf_url, $post_title = 'PDF документ') {
if (empty($pdf_url)) return false;
// Получаем содержимое файла
$tmp = download_url($pdf_url);
if (is_wp_error($tmp)) {
return false;
}
// Определяем имя файла
$file_array = array();
$file_array['name'] = basename($pdf_url);
$file_array['tmp_name'] = $tmp;
// Проверяем и загружаем файл в медиабиблиотеку
$id = media_handle_sideload($file_array, 0);
if (is_wp_error($id)) {
@unlink($file_array['tmp_name']);
return false;
}
// Создаём пост с прикреплённым PDF
$post_data = array(
'post_title' => $post_title,
'post_content' => '[wpdownload_pdf_viewer id="'. $id .'"]',
'post_status' => 'publish',
'post_type' => 'post',
);
$post_id = wp_insert_post($post_data);
return $post_id;
}
Этот код можно вызывать из Cron-задачи, чтобы регулярно скачивать новые PDF по списку URL и создавать записи.
Шорткод для просмотра PDF
Чтобы отображать PDF на странице, добавим простой шорткод:
function wpdownload_pdf_viewer_shortcode($atts) {
$atts = shortcode_atts(array('id' => 0), $atts);
$url = wp_get_attachment_url($atts['id']);
if (!$url) return 'PDF не найден';
return '<iframe src="'. esc_url($url) .'" width="100%" height="600px"></iframe>';
}
add_shortcode('wpdownload_pdf_viewer', 'wpdownload_pdf_viewer_shortcode');
Организация автоматического запуска импорта с помощью WP Cron
Чтобы импорт происходил автоматически, нужно настроить задание WP Cron. Добавим функцию для регистрации события:
function wpdownload_schedule_pdf_import() {
if (!wp_next_scheduled('wpdownload_pdf_import_event')) {
wp_schedule_event(time(), 'hourly', 'wpdownload_pdf_import_event');
}
}
add_action('wp', 'wpdownload_schedule_pdf_import');
add_action('wpdownload_pdf_import_event', 'wpdownload_pdf_import_task');
function wpdownload_pdf_import_task() {
$pdf_urls = array(
'https://example.com/file1.pdf',
'https://example.com/file2.pdf',
);
foreach ($pdf_urls as $url) {
wpdownload_import_pdf_from_url($url, 'Импортированный PDF: ' . basename($url));
}
}
Такое решение позволит автоматически скачивать и добавлять в базу новые PDF файлы по расписанию, например, каждый час.
Советы по безопасности и производительности при импорте PDF
Импорт файлов с внешних сайтов несёт риски — стоит проверять доступность и валидность файлов, ограничивать типы и размер загружаемых данных. Для этого можно расширить функцию импорта, добавив проверки MIME-типа и размера.
Рекомендуется использовать очередь на импорт, если файлов много, чтобы не перегружать сервер и избежать таймаутов.
Для крупных проектов подойдёт интеграция с облачными хранилищами и CDN, чтобы PDF загружались в облако и показывались пользователям быстро и стабильно.
Заключение
Автоматический импорт PDF файлов в WordPress значительно упрощает работу с документами на сайте. Можно использовать готовые плагины, такие как WP All Import с Media Add-On, либо реализовать собственное решение на PHP с использованием функций WordPress для загрузки и прикрепления файлов. Настройка WP Cron позволит запускать импорт регулярно и без участия администратора.
Если нужно расширить функционал, можно интегрировать просмотр PDF прямо на сайте с помощью шорткодов и iframe, а также добавить обработку ошибок и уведомления об успешном импорте.
Для удобства и расширения возможностей рекомендуем посмотреть WP All Import Pro — один из лучших инструментов для автоматизации импорта данных в WordPress.