2017-02-22 10 views
1

私はこのコードを使用してpdfが "sku.pdf"という形式の注文応答にpdfを添付しようとしています。残念ながらwoocommerce_email_attachmentsフックでget_product_from_item()エラーが発生しました

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解析エラー:認識されないトークン 『<』」を投げています - どうやら私は間違っているつもりライン$_product = $item->get_product_from_item($item);

から?

(Iが正常になったとコメント行は、添付ファイルのコードが動作する。すなわち、限りある)の代わりに使用すると、簡単に得ることができますし、直接、製品IDは、あなたが使用できるよう、get_product_from_item()を使用しての

+0

pdfパスについてはわかりません。ダウンロードディレクトリは、Webサーバーのルートにあります。 '/ downloads/W611.pdf'は正しいパスです。私がこれを行うと、空のpdfが得られます。私が最初のスラッシュを取り除くと 'downloads/W611.pdf'はpdfが正しく配送されます。 –

答えて

1

wc_get_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を無視するか、いくつかのエラーやバグがある可能性があります。

+0

本当にありがとう、Mr Loic –

+0

申し訳ありません!忘れてしまった。それは "彼に魚を育てるように教える"というケースでした。 (私は釣りに行った;-) –

関連する問題