プラグインWooCommerceのwoocommerce_email_attachmentsフィルタの使用方法・解説

概要

woocommerce_email_attachments フィルタは、WooCommerceが送信するメールに添付ファイルを追加するために使用されるWordPressのフックです。このフィルタを利用することで、特定の条件に基づいて、顧客や管理者に送信されるメールに添付ファイルを動的に追加することができます。一般的に以下のようなシチュエーションで利用されます:

  1. 注文確認メールに請求書を添付する。
  2. 出荷通知メールに追跡情報を含めたPDFを送付する。
  3. 顧客の誕生日に特別な割引クーポンを添付する。
  4. サブスクリプションメールに最新の製品カタログを追加する。
  5. 特定のプロモーションに応じた資料を追加する。
  6. メールの内容によって異なるファイルを添付する。

構文

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

パラメータ

  • $attachments (array): 追加するファイルのパスを含む配列。
  • $email_id (string): 処理中のメールのID。
  • $object (object): メールに関連するオブジェクト(例:オーダーオブジェクト)。

戻り値

  • array: 添付ファイルのパスを含む配列を返す。

使用可能なプラグインのバージョン

  • WooCommerce: 3.0以上
  • WordPress: 4.4以上

この関数のアクションでの使用可能性

アクション 使用可能性
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプル1: 注文確認メールに請求書を添付

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

function add_invoice_to_order_email($attachments, $email_id, $order) {
    if ($email_id === 'customer_completed_order') {
        $invoice_path = '/path/to/invoice.pdf'; // 請求書のパス
        $attachments[] = $invoice_path; // 添付
    }
    return $attachments;
}

// 引用元: https://www.businessbloomer.com/woocommerce-add-attachments-emails/

このサンプルコードは、注文が完了した際の顧客向けメールに請求書PDFを添付します。

サンプル2: 出荷通知メールに追跡情報を添付

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

function add_tracking_info_to_shipping_email($attachments, $email_id, $order) {
    if ($email_id === 'customer_shipped_order') {
        $tracking_info_path = '/path/to/tracking_info.pdf'; // 追跡情報のパス
        $attachments[] = $tracking_info_path; // 添付
    }
    return $attachments;
}

// 引用元: https://woocommerce.com/document/woocommerce-emails/

このコードは出荷通知のメールに追跡情報を含むPDFを追加します。

サンプル3: 顧客の誕生日にクーポンを添付

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

function add_coupon_to_birthday_email($attachments, $email_id, $customer) {
    if ($email_id === 'customer_birthday_email') {
        $coupon_path = '/path/to/coupon.pdf'; // 割引クーポンのパス
        $attachments[] = $coupon_path; // 添付
    }
    return $attachments;
}

// 引用元: https://developer.woocommerce.com/

このサンプルでは、特定の顧客の誕生日に送りたいクーポンを添付します。

サンプル4: プロモーションに基づいて資料を追加する

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

function add_promo_material($attachments, $email_id, $order) {
    if ($email_id === 'customer_promotional_email') {
        $promo_material_path = '/path/to/promo.pdf'; // プロモーション資料のパス
        $attachments[] = $promo_material_path; // 添付
    }
    return $attachments;
}

// 引用元: https://www.digitaldarts.com.au/

このコードは、プロモーションメールに関連する資料を追加します。

サンプル5: 注文内容に応じて異なるファイルを添付

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

function conditional_attachment_based_on_order($attachments, $email_id, $order) {
    if ($email_id === 'customer_completed_order') {
        $items = $order->get_items();
        foreach ($items as $item) {
            if ($item->get_product_id() == 123) { // 特定の製品ID
                $attachments[] = '/path/to/special_attachment.pdf';
                break;
            }
        }
    }
    return $attachments;
}

// 引用元: https://www.wpexplorer.com/

このサンプルコードは、特定の商品が注文された場合にのみ、特別なファイルを添付します。

この関数について質問する


上の計算式の答えを入力してください