You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress自定义WooCommerce插件中使用Dompdf 3.1.0无法生成PDF的问题求助

WordPress自定义WooCommerce插件中使用Dompdf 3.1.0无法生成PDF的问题求助

各位好,我最近在开发一个自定义WooCommerce插件,核心功能是用户完成订单后自动生成优惠券PDF,但卡在Dompdf生成这一步了,实在搞不定,来求助大家!

情况是这样的:我用Dompdf 3.1.0写的PDF生成代码,单独拿出来测试完全没问题,PDF能正常生成并保存。但把这段代码放到WordPress的自定义插件里,绑定到woocommerce_order_status_completed钩子上之后,就完全没反应了——既没有报错,服务器里也找不到生成的PDF文件。

我已经做了这些排查:

  • 确认Dompdf是通过Composer正确安装在插件目录的vendor文件夹里的,能成功实例化Dompdf对象,调用render()、output()这些方法也没报错
  • 专门在钩子函数里加了error_log(),能看到订单ID正常输出,说明钩子确实被触发了
  • 保存PDF的vouchers文件夹权限已经设为777,确保有写入权限
  • 开启了PHP的错误显示和日志,不管是PHP错误日志还是WordPress的debug.log里都没有任何相关错误信息
  • 试过两种生成方式:stream()直接下载和output()后用file_put_contents()保存,两种在WordPress环境里都没效果,但单独运行都正常

下面是我插件的关键代码片段:

<?php
/*
Plugin Name: Voucher Generator
Description: Generuje PDF z voucherem po zakupie.
Version: 1.0
*/

// 开启错误调试
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// 绑定WooCommerce订单完成钩子
add_action('woocommerce_order_status_completed', 'generate_voucher_pdf');

function generate_voucher_pdf($order_id) {
    // 引入Dompdf自动加载文件
    require_once plugin_dir_path(__FILE__) . 'vendor/autoload.php';

    use Dompdf\Dompdf;
    use Dompdf\Options;

    // 配置Dompdf选项
    $options = new Options();
    $options->set('defaultFont', 'Arial');
    $options->set('debugKeepTemp', true); // 开启临时文件保留,方便调试

    // 初始化Dompdf
    $dompdf = new Dompdf($options);

    // 准备PDF的HTML内容
    $html = '<div style="padding: 20px;"><h1>您的订单优惠券</h1><p>订单编号:' . esc_html($order_id) . '</p></div>';

    // 加载HTML并渲染
    $dompdf->loadHtml($html);
    $dompdf->setPaper('A4', 'portrait');
    $dompdf->render();

    // 尝试保存PDF到服务器
    $pdf_output = $dompdf->output();
    $save_path = plugin_dir_path(__FILE__) . 'vouchers/voucher-' . $order_id . '.pdf';
    // 这里加日志确认路径是对的
    error_log('PDF保存路径:' . $save_path);
    file_put_contents($save_path, $pdf_output);
}

实在想不通为什么在WordPress环境里就不行,有没有朋友遇到过类似的情况?或者能给我一些新的排查方向吗?比如是不是WordPress的输出缓冲区机制影响了Dompdf的渲染?或者钩子执行的环境有什么权限限制我没考虑到?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 13:08:12