【问题标题】:get_product_from_item() error with woocommerce_email_attachments hookwoocommerce_email_attachments 挂钩的 get_product_from_item() 错误
【发布时间】:2017-02-22 12:32:13
【问题描述】:

我正在尝试使用此代码将 pdf 附加到订单响应中,其中 pdf 格式为“sku.pdf”;

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

function woocommerce_attachments_filter ( $attachments, $status , $order, $sent_to_admin ) {

     if (! $sent_to_admin ) { 

            $order_items = $order->get_items();

            foreach ($order_items as $item) { // loop through order items

              $_product = $item->get_product_from_item($item);
              $sku =  $_product->get_sku();

              $pdf_download = 'downloads/'.$sku.'.pdf'; 
              $attachments[] = $pdf_download;
              //$joining_instructions = 'downloads/W611.pdf'; 
              //$attachments[] = $joining_instructions;
            }
     }

return $attachments; 
}

不幸的是,它抛出错误“SyntaxError: JSON Parse error: Unrecognized token '$_product = $item->get_product_from_item($item);

我哪里错了?

(注释行是我成功的,即附件代码有效)

【问题讨论】:

  • 关于 pdf 路径,还有一些我不明白的地方。下载目录位于 Web 服务器的根目录。所以/downloads/W611.pdf 是正确的路径。如果我这样做,我会得到一个空的pdf。如果我删除初始斜线因此downloads/W611.pdf pdf 正确传递。

标签: php wordpress woocommerce product orders


【解决方案1】:

除了使用 get_product_from_item(),您可以轻松直接地获取产品 ID,您可以使用 wc_get_product() 获取 $product 对象的实例…

这是你的功能代码:

add_filter( 'woocommerce_email_attachments', 'woocommerce_attachments_filter', 10, 4 );
function woocommerce_attachments_filter ( $attachments, $status , $order, $sent_to_admin ) {

    if (! $sent_to_admin ) { 

        foreach ($order->get_items() as $item) { // loop through order items

            $product = wc_get_product($item['product_id']);
            $sku =  $product->get_sku();

            $pdf_download = 'downloads/'.$sku.'.pdf'; 
            $attachments[] = $pdf_download;
            //$joining_instructions = 'downloads/W611.pdf'; 
            //$attachments[] = $joining_instructions;
        }
    } 
    return $attachments; 
}

同样在add_action() 中,您需要在此处输入正确数量的参数,即 4。如果没有,$sent_to_admin 可能会被忽略,或者您可能会遇到一些错误或错误……

【讨论】:

  • 对不起!忘记。这是一个“教他钓鱼……”的案例。 (我去钓鱼了 ;-)
猜你喜欢
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 2020-03-06
  • 1970-01-01
  • 2022-09-23
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多