Php 仅将pdf附加到Woocommerce中的特定电子邮件通知

Php 仅将pdf附加到Woocommerce中的特定电子邮件通知,php,wordpress,woocommerce,hook-woocommerce,email-notifications,Php,Wordpress,Woocommerce,Hook Woocommerce,Email Notifications,仅将pdf附加到Woocomece新订单电子邮件 我正在使用这段代码,但是PDF文件会被连接到woocommerce中的每一封电子邮件 add_filter( 'woocommerce_email_attachments', 'attach_terms_conditions_pdf_to_email', 10, 3); function attach_terms_conditions_pdf_to_email ( $attachments , $email_id, $email_object

仅将pdf附加到Woocomece新订单电子邮件

我正在使用这段代码,但是PDF文件会被连接到woocommerce中的每一封电子邮件

 add_filter( 'woocommerce_email_attachments', 'attach_terms_conditions_pdf_to_email', 10, 3);
 function attach_terms_conditions_pdf_to_email ( $attachments , $email_id, $email_object ) {

     $your_pdf_path = get_template_directory() . '/terms123.pdf';
    $attachments[] = $your_pdf_path;

    return $attachments;
 }

更新2

在Woocommerce中没有针对客户的“新订单”通知。根据启用的付款方式,发送给目标公司的通知可以是“客户待决订单”或/和客户处理订单”(见最后一节)

以下内容将为客户保留订单电子邮件通知启用PDF附件:

add_filter( 'woocommerce_email_attachments', 'attach_terms_conditions_pdf_to_email', 10, 3 );
function attach_terms_conditions_pdf_to_email ( $attachments , $email_id, $email_object ) {
    // Avoiding errors and problems
    if ( ! is_a( $order, 'WC_Order' ) || ! isset( $email_id ) ) {
        return $attachments;
    }

    // Only for "Customer On Hold" email notification (for customer)
    if( $email_id === 'customer_on_hold_order' ){

        $your_pdf_path = get_template_directory() . '/terms123.pdf';
        $attachments[] = $your_pdf_path;
    }

    return $attachments;
}
代码放在活动子主题(活动主题)的function.php文件中。经过测试,效果良好


根据安装中启用的支付网关,您可以:

1) 您可以改为使用“处理”电子邮件,替换此行:

if( $email_id === 'customer_on_hold_order' ){
if( $email_id === 'customer_on_hold_order' ){
据此:

if( $email_id === 'customer_processing_order' ){
if( in_array( $email_id, array( 'customer_on_hold_order', 'customer_processing_order' ) ){
2) 您可以同时使用客户“保留”和“处理”电子邮件,替换此行:

if( $email_id === 'customer_on_hold_order' ){
if( $email_id === 'customer_on_hold_order' ){
据此:

if( $email_id === 'customer_processing_order' ){
if( in_array( $email_id, array( 'customer_on_hold_order', 'customer_processing_order' ) ){

更新2

在Woocommerce中没有针对客户的“新订单”通知。根据启用的付款方式,发送给目标公司的通知可以是“客户待决订单”或/和客户处理订单”(见最后一节)

以下内容将为客户保留订单电子邮件通知启用PDF附件:

add_filter( 'woocommerce_email_attachments', 'attach_terms_conditions_pdf_to_email', 10, 3 );
function attach_terms_conditions_pdf_to_email ( $attachments , $email_id, $email_object ) {
    // Avoiding errors and problems
    if ( ! is_a( $order, 'WC_Order' ) || ! isset( $email_id ) ) {
        return $attachments;
    }

    // Only for "Customer On Hold" email notification (for customer)
    if( $email_id === 'customer_on_hold_order' ){

        $your_pdf_path = get_template_directory() . '/terms123.pdf';
        $attachments[] = $your_pdf_path;
    }

    return $attachments;
}
代码进入活动子主题(活动主题)的function.php文件。测试和工作


根据安装中启用的支付网关,您可以:

1) 您可以改为使用“处理”电子邮件,替换此行:

if( $email_id === 'customer_on_hold_order' ){
if( $email_id === 'customer_on_hold_order' ){
据此:

if( $email_id === 'customer_processing_order' ){
if( in_array( $email_id, array( 'customer_on_hold_order', 'customer_processing_order' ) ){
2) 您可以同时使用客户“保留”和“处理”电子邮件,替换此行:

if( $email_id === 'customer_on_hold_order' ){
if( $email_id === 'customer_on_hold_order' ){
据此:

if( $email_id === 'customer_processing_order' ){
if( in_array( $email_id, array( 'customer_on_hold_order', 'customer_processing_order' ) ){

我想把它给顾客,而不是顾客admin@Sonia我更新了我的答案,加上一些解释……因为某些原因,它对我不起作用。你在哪里上传了PDF文档@LoicTheAztec@Wed在子主题文件夹上,应该使用:
get\u stylesheet\u directory\u uri()
(用于路径)。请参阅最近的相关回答:@LoicTheAztec我正在这样做。这是我的代码:添加过滤器('woocommerce\u email\u attachments','Attachment\u terms\u conditions\u pdf\u to\u email',10,3);函数attach_terms_conditions_pdf_to_email($attachments,$email_id,$email_object){//如果(!is_a($order,'WC_order')| |!isset($email_id)){返回$attachments;}如果($email_id=='customer_on_on_hold_order'){$attachments[]=获取样式表目录()./terms.pdf';}返回$attachments;}我希望它是给客户的,而不是给我的admin@Sonia我更新了我的答案,加上一些解释……因为某些原因,它对我不起作用。你在哪里上传了PDF文档@LoicTheAztec@Wed在子主题文件夹上,应该使用:
get\u stylesheet\u directory\u uri()
(用于路径)。请参阅最近的相关回答:@LoicTheAztec我正在这样做。这是我的代码:添加过滤器('woocommerce\u email\u attachments','Attachment\u terms\u conditions\u pdf\u to\u email',10,3);函数attach_terms_conditions_pdf_to_email($attachments,$email_id,$email_object){//如果(!is_a($order,'WC_order')| |!isset($email_id)){返回$attachments;}如果($email_id=='customer_on_on_hold_order'){$attachments[]=获取样式表目录()./terms.pdf';}返回$attachments;}