【问题标题】:Insert action after Woocomerce Completed Order Email is sent out在 Woocommerce 完成订单电子邮件发送后插入操作
【发布时间】:2016-09-20 09:02:04
【问题描述】:

我要完成以下工作:

使用 Wocomerce 完成的订单电子邮件会生成一个 pdf,并作为附件发送出去。邮件发送后,pdf在服务器上被删除。

我通过这样的 woocommerce_email_attachments 过滤器实现了第一部分。

add_filter('woocommerce_email_attachments', 'attach_ticket_pdf_to_email', 10,  3);

现在出于安全原因,我想在发送电子邮件后删除服务器上生成的 pdf。

我找到了可以挂钩的操作“woocommerce_order_status_completed”,但如果我从管理后端重新发送已完成的订单电子邮件,则不会调用此操作。

是否有一些钩子或过滤器或操作被调用以在 Wocomerce 中发送电子邮件。还是在邮件发送后?

我想调用一个函数来再次删除那些 pdf。

有什么想法吗?

【问题讨论】:

    标签: filter woocommerce hook action


    【解决方案1】:

    电子邮件以默认优先级 10 触发。因此,我认为您可以使用更高/更高的优先级调用您的函数,并且它会在电子邮件发送后 被触发。 p>

    如果您重新发送来自管理员的订单电子邮件,您可以使用woocommerce_after_resend_order_email 挂钩。这会传递一个$order 对象,因此您不能将完全相同的函数附加到两者。

    我会这样开始:

    add_action( 'woocommerce_order_status_completed', 'delete_pdf', 20 );
    function delete_pdf( $order_id ){
        // do your thing to delete the file
    }
    
    add_action( 'woocommerce_after_resend_order_email', 'after_resend', 10, 2 );
    function after_resend( $order, $action ){
        if( $action == 'customer_completed_order' ){
            delete_pdf( $order->id );
        }
    }
    

    【讨论】:

    • 感谢您的反馈! woocommerce_after_resend_order_email 操作完美,但优先级为 20 的 woocommerce_after_resend_order_email 不起作用。之后它没有被解雇......知道如何调整它以便它实际删除文件夹吗?
    猜你喜欢
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多