2017-01-13 24 views
4

注文レポートを電子メールアドレスに送信するプラグインを作成しました。注文情報をCSVファイルで取得し、電子メールの添付ファイルとして送信する必要があります。これまでのところ、私は注文情報を手に入れましたが、私はWooCommerceの電子メールにファイルを添付する方法を考え出すのに苦労しています。 「order_information_reportは」それを送られているとき、私はそう添付ファイル上にフックするこのコードを使用しているWooCommerce電子メールの添付ファイル

function attach_file_woocommerce_email($attachments, $id, $object) 
{   
    if($id == 'order_information_report') 
    { 
     $upload = wp_upload_dir(); 

     $order_csv_information = $upload['baseurl'] . '/order_information.csv'; 
     $attachments[]  = $order_csv_information; 
    } 

    return $attachments; 
} 
add_filter('woocommerce_email_attachments', 'attach_file_woocommerce_email', 10, 3); 

は、csvファイルを追加します。しかし、これはうまくいかないようです。私はif文をコメントアウトしようとしましたが、それでも動作しませんでした。

興味深いことに、私はWooCommerceの電子メールフォルダ内の電子メールトリガでこれを試しました。

public function trigger($order_id) // Email Trigger 
{ 
    if(!$this->get_recipient()) 
    { 
    return; 
    } 

    $this->send($this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments()); 

    print_r($this->get_attachments()); 
} 

print_rは、csvファイルのパスを返すようです。そのパスをブラウザに入力するとダウンロードできます。なぜこれが正しく動作していないのかについての提案はありますか?

編集は、私はプラグインディレクトリの代わりに、正常に動作するようですアップロードディレクトリへのパスを変更したときに、私は、電子メールを取得するが、いくつかの理由がない添付ファイル

+1

あなたの答えがうまくいかない理由を推測しなければならないのなら、ここではアップロードディレクトリへのディレクトリパスではなく 'baseurl'を使用していることでしょう。あなたの答えでは、プラグインディレクトリへのディレクトリパスを使用しています。添付ファイルはURLではなくファイルパスでのみ動作します。 – helgatheviking

+0

ええ、私は答えがありました投稿した後に2番目の添付ファイルの配列を印刷したときにそうかもしれないと思った。 –

答えて

2

に言及するのを忘れてしまいました。

function attach_file_woocommerce_email($attachments, $id, $object) 
{   
    if($id == 'order_information_report') 
    { 
     $your_txt_path = woire_get_plugin_path() . '/test.txt'; 
     $attachments[] = $your_txt_path; 
    } 

    return $attachments; 
} 
add_filter('woocommerce_email_attachments', 'attach_file_woocommerce_email', 10, 3); 
関連する問題