Как создать автоматическую генерации pdf при публикации записи из админки?
Ссылка скопирована
Появилась следующая задача:
Необходимо чтобы посты сохранялись в pdf. Но не так как это делают плагины, а получается что в момент публикации из админки, пдф должен сгененрироваться, расположиться в медиа базе, чтоб на него появилась физическая ссылка, и эту ссылку уже постоянную добавить, т.е. прикрепить в пост?
Насколько это реально? Как правильно выстроить алгоритм?
Дополнительно:
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
0 ответов
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
0 ответов
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
0 ответов
Telegram
Как диагностировать ошибку с подключением к прокси в мобильном приложении Telegram?
0 ответов

Да, это реально. Правильная схема такая: при публикации записи ловите событие WordPress, генерируете PDF из HTML, сохраняете файл в uploads, регистрируете его как attachment в медиабиблиотеке и записываете ID или URL PDF в мета-поле записи. Делать это прямо в шаблоне нельзя: генерация должна происходить один раз при сохранении, а не на каждом открытии страницы.
Точка входа:
add_action('transition_post_status', function ($new_status, $old_status, $post) { if ($post->post_type !== 'post') { return; } if ($new_status !== 'publish' || $old_status === 'publish') { return; } // Здесь вызываем генерацию PDF для $post->ID. }, 10, 3);
Для генерации PDF обычно используют Dompdf, mPDF или wkhtmltopdf. На обычном хостинге проще Dompdf/mPDF, но надо проверить лимиты памяти. Алгоритм такой: собрать HTML записи, подключить базовые стили, передать HTML в библиотеку, получить бинарный PDF, положить его в
wp_upload_dir().После сохранения файла зарегистрируйте его в медиабиблиотеке:
$attachment_id = wp_insert_attachment([ 'post_mime_type' => 'application/pdf', 'post_title' => get_the_title($post_id), 'post_status' => 'inherit', ], $file_path, $post_id); require_once ABSPATH . 'wp-admin/includes/image.php'; wp_update_attachment_metadata($attachment_id, wp_generate_attachment_metadata($attachment_id, $file_path)); update_post_meta($post_id, '_generated_pdf_id', $attachment_id);
Важно защититься от повторной генерации: проверяйте, есть ли уже PDF, или обновляйте его только при изменении записи. Для тяжёлых PDF лучше запускать генерацию через WP-Cron/очередь, чтобы редактор не ждал 20-30 секунд после нажатия «Опубликовать».