get_product_from_item() 错误与 woocommerce_email_attachments 挂钩
get_product_from_item() error with woocommerce_email_attachments hook
我正在尝试使用此代码将 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);
我哪里错了?
(注释行是我成功的,即附件代码有效)
不使用 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
可能会被忽略,或者您可能会遇到一些错误或错误......
我正在尝试使用此代码将 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);
我哪里错了?
(注释行是我成功的,即附件代码有效)
不使用 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
可能会被忽略,或者您可能会遇到一些错误或错误......