Как создать автоматический импорт PDF-файлов в WordPress

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

Почему важен автоматический импорт PDF в WordPress

Ручная загрузка и публикация PDF-файлов на сайте — процесс длительный и подверженный ошибкам. Автоматизация позволяет:

  • Сократить время на обновление контента;
  • Обеспечить регулярное обновление библиотеки документов;
  • Уменьшить вероятность дублирования;
  • Упростить интеграцию с внешними сервисами и хранилищами;
  • Автоматически создавать посты или страницы с привязкой к PDF.

Для реализации автоматического импорта можно использовать WP-Cron, REST API, и фильтры WordPress. Рассмотрим базовые технические решения.

Реализация автоматического импорта PDF с помощью PHP-кода

1. Загрузка PDF-файлов из папки на сервере

Предположим, что PDF-файлы автоматически попадают в папку /wp-content/uploads/import-pdf/. Нужно написать функцию, которая сканирует эту папку и импортирует новые файлы в медиабиблиотеку.

function wptest_import_pdf_from_folder() {
    $upload_dir = wp_upload_dir();
    $import_dir = $upload_dir['basedir'] . '/import-pdf/';

    if ( ! is_dir($import_dir) ) return;

    $files = scandir($import_dir);

    foreach ($files as $file) {
        if (in_array($file, array('.', '..'))) continue;

        $file_path = $import_dir . $file;
        $filetype = wp_check_filetype($file_path);

        if ($filetype['ext'] !== 'pdf') continue;

        // Проверяем, не импортирован ли файл уже
        $existing = new WP_Query(array(
            'post_type' => 'attachment',
            'meta_query' => array(
                array(
                    'key' => 'wptest_imported_pdf_filename',
                    'value' => $file,
                    'compare' => '='
                )
            )
        ));

        if ($existing->have_posts()) continue; // уже импортирован

        $file_array = array(
            'name' => $file,
            'tmp_name' => $file_path
        );

        // Импортируем файл в медиабиблиотеку
        $attachment_id = media_handle_sideload($file_array, 0);

        if (is_wp_error($attachment_id)) {
            error_log('Ошибка импорта PDF: ' . $file . ' - ' . $attachment_id->get_error_message());
            continue;
        }

        // Добавляем мета, чтобы отмечать, что файл импортирован
        update_post_meta($attachment_id, 'wptest_imported_pdf_filename', $file);

        // По желанию, можно создать отдельный пост с привязкой к PDF
        $post_data = array(
            'post_title' => pathinfo($file, PATHINFO_FILENAME),
            'post_type' => 'post',
            'post_status' => 'publish',
            'meta_input' => array(
                'wptest_pdf_attachment_id' => $attachment_id
            )
        );

        wp_insert_post($post_data);
    }
}

// Запускаем функцию через WP-Cron, например, раз в час
if (! wp_next_scheduled('wptest_import_pdf_cron_hook')) {
    wp_schedule_event(time(), 'hourly', 'wptest_import_pdf_cron_hook');
}
add_action('wptest_import_pdf_cron_hook', 'wptest_import_pdf_from_folder');

Этот код сканирует папку, импортирует PDF в медиабиблиотеку и создаёт для каждого файла новый пост с привязкой к вложению.

2. Автоматическое создание списка и отображение PDF на сайте

Чтобы вывести список импортированных PDF-файлов, можно использовать следующий шорткод:

function wptest_pdf_list_shortcode() {
    $args = array(
        'post_type' => 'post',
        'meta_key' => 'wptest_pdf_attachment_id',
        'posts_per_page' => -1
    );

    $query = new WP_Query($args);
    if (!$query->have_posts()) return '<p>PDF файлы не найдены.</p>';

    $output = '<ul>';
    while ($query->have_posts()) : $query->the_post();
        $attachment_id = get_post_meta(get_the_ID(), 'wptest_pdf_attachment_id', true);
        $url = wp_get_attachment_url($attachment_id);
        $title = get_the_title();
        $output .= '<li><a href="' . esc_url($url) . '" target="_blank">' . esc_html($title) . '</a></li>';
    endwhile;
    wp_reset_postdata();
    $output .= '</ul>';
    return $output;
}
add_shortcode('wptest_pdf_list', 'wptest_pdf_list_shortcode');

Вставьте [wptest_pdf_list] в нужном месте сайта, чтобы вывести список с ссылками на PDF.

Использование плагинов для автоматического импорта PDF

Если не хочется писать код, существуют плагины, упрощающие автоматизацию импорта PDF:

  • FileBird — удобный менеджер медиафайлов с поддержкой папок;
  • WP All Import — мощный инструмент для импорта любых данных, в том числе файлов с внешних источников;
  • Media from FTP — позволяет импортировать файлы, загруженные по FTP, в медиабиблиотеку;
  • Auto Upload Images — автоматически импортирует и загружает изображения, но может быть адаптирован для PDF с кастомизацией.

Например, плагин Media from FTP позволяет просто выгружать PDF, загруженные на сервер по FTP, прямо в медиафайлы WordPress без двойной загрузки.

Советы по безопасности и производительности при импорте PDF

Автоматический импорт файлов требует особого внимания к безопасности:

  • Проверяйте типы файлов и расширения, чтобы избежать загрузки вредоносных скриптов;
  • Используйте функцию wp_check_filetype() для контроля;
  • Настройте права доступа к папке загрузки;
  • Регулярно очищайте папку импорта от уже обработанных файлов;
  • Планируйте выполнение импортов в часы наименьшей нагрузки.

Для повышения производительности лучше ограничить количество импортируемых файлов за один запуск и обрабатывать файлы партиями.

Интеграция с плагином Clearfy Pro для оптимизации

Если на вашем сайте установлен плагин Clearfy Pro, он поможет отключить ненужные функции WordPress, которые могут замедлять импорт и работу с медиафайлами. Например, Clearfy позволяет контролировать автозагрузку скриптов и оптимизировать базу данных, что положительно скажется на обработке большого количества файлов.

Выводы и рекомендации

Автоматический импорт PDF в WordPress — практическое и востребованное решение для сайтов с документооборотом и большим количеством файлов. Использование собственного кода даёт полную гибкость и контроль, а плагины позволяют быстро настроить процесс без программирования.

Рекомендуется комбинировать автоматизацию с регулярным мониторингом и оптимизацией базы данных, а также использовать WP-Cron для планирования задач. Интеграция с плагинами типа Clearfy Pro обеспечит дополнительную стабильность и скорость.

Попробуйте описанные методы и адаптируйте их под задачи вашего сайта — это значительно упростит работу с PDF и улучшит опыт пользователей.

Как автоматизировать удаление старого контента в WordPress
28.01.2026
Автоматическое удаление старых записей в WordPress через WP-Cron
30.03.2026
Как создать адаптивный шаблон WordPress с нуля
15.11.2025
Как создать собственный виджет WordPress
11.11.2025
Как автоматизировать удаление старых записей в WordPress через WP-Cron
23.02.2026