web-dev-qa-db-ja.com

Woocommerce注文メールの各詳細のヘッダータイトルの編集

私は気の利いたテーマ、woocommerceプラグインを使っています。私のお礼のページで私は銀行の詳細、注文の詳細、顧客の詳細などを取得しますが、顧客の注文の電子メールでは、それらの詳細のヘッダーのタイトルはお礼のページで表示されるものと異なります。電子メールの詳細のヘッダータイトルを変更する方法はありますか?私はすでにorder-details-customer.phpのヘッダータイトルを変更しました、そしてそれは礼状に正しく反映されますが、電子メールではありません。

前もって感謝します!

誰かが本当に助けてくれることを願っています! T-T

2
zhie

Eメール・テンプレートの本文(メッセージ)に表示される見出しを変更するには、以下のフィルターを使用できます。'woocommerce_email_heading_' . $this->idここで、$this->idは、指定されたタイプのEメール・クラス内に設定されるidクラス・プロパティーに相当します。

たとえば、 "New Order"という電子メールの見出しを変更するには、次のようにします。

function filter_heading_new_order($heading) {
    return 'My New Heading';
}

add_filter('woocommerce_email_heading_new_order', 'filter_heading_new_order');

各Eメールの$this->idプロパティーを取得するには、以下のクラスを見てください。

plugins/woocommerce/includes/emails

あなたのコメントに基づいてさらに詳しく述べるために、もしあなたがEメール本文(message)内の特定の要素のいくつかを編集したいのなら、これらのフックが使用されるので問題のテンプレートファイル内で使われるいくつかのフックを見る必要があるテンプレートにデータを挿入します。

たとえば、[顧客の詳細]見出しを編集するには、次のようにします。

function filter_custom_details_header($heading) {
    return 'My Customer Details Heading';
}

add_filter('woocommerce_email_custom_details_header', 'filter_custom_details_header');

銀行詳細の見出しをフィルタリングするには、woocommerce_email_before_order_tableにフックされ、class-wc-gateway-bacs.phpのコールバック関数email_instructions()から呼び出される "Our Bank Details"をフィルタリングするには、この値をエコーし​​て直接フィルタをかけないため、gettextフィルタを使用する必要があります。

function filter_bank_details_headin($translated_text, $text, $domain) {

    if ( did_action('woocommerce_email_before_order_table') ) {

        switch ( $translated_text ) {

            case 'Our Bank Details' :

                $translated_text = __( 'My Bank Details Are...', 'woocommerce' );
                break;

        }

    }

    return $translated_text;
}

add_filter( 'gettext', 'filter_bank_details_heading', 20, 3 );
2
userabuser