5

私はこのような状況を持って上書きせずBACS口座フィールドにカスタムフィールドを追加する - 私はwoocommerce電子メールテンプレートのいずれかに変更を加えたが、I`mは確か - これらの変更は次のwoocommerceの更新後に失われてしまいますが。コアファイル

私が知っているように、私はこの問題を回避するために、テーマ機能を使用する必要があります。

これは、変更前のコードである:ここでは

echo '<ul class="wc-bacs-bank-details order_details bacs_details">' . PHP_EOL; 

       // BACS account fields shown on the thanks page and in emails 
       $account_fields = apply_filters('woocommerce_bacs_account_fields', array(
        'account_number'=> array(
         'label' => __('Account Number', 'woocommerce'), 
         'value' => $bacs_account->account_number 
        ), 
        'sort_code'  => array(
         'label' => $sortcode, 
         'value' => $bacs_account->sort_code 
        ), 
        'iban'   => array(
         'label' => __('IBAN', 'woocommerce'), 
         'value' => $bacs_account->iban 
        ), 
        'bic'   => array(
         'label' => __('BIC', 'woocommerce'), 
         'value' => $bacs_account->bic 
        ) 

       ), $order_id); 

       foreach ($account_fields as $field_key => $field) { 
        if (! empty($field['value'])) { 
         echo '<li class="' . esc_attr($field_key) . '">' . esc_attr($field['label']) . ': <strong>' . wptexturize($field['value']) . '</strong></li>' . PHP_EOL; 
        } 
       } 

       echo '</ul>'; 

は、私が挿入するカスタム・アカウント・フィールドコードです:

'merkis' => array(
    'label' => $merkis, 
    'value' => $pasutijums 
) 

どのように私は、そのコアファイルを上書きせずに私のカスタムコードを挿入することができます?

おかげ

+0

@LoicTheAztecは、あなたの答えをありがとう!しかし、フックされた関数を介してこのコードインジェクションを作成する方法はありますか? –

+0

@LoicTheAztec class-wc-gateway-bacs.php –

+1

「woocommerce_bacs_account_fields」と入力すれば、Googleで検索することができ、関連するすべての質問と回答が見つかります。 – LoicTheAztec

答えて

6

コアファイルを上書きせず、常にWooCommerceは、コードのカスタマイズを行うためにフックを付属使用しないでください。

あなたがあなたの提供されたコードに見るように、カスタムフック関数を使用してこの変更を行うための方法を見つけることができません持っている場合は、上書きせずに、カスタムコードを追加するwoocommerce_bacs_account_fieldsフィルターフックを使用することができます任意のWooCommerceコアファイル。

だからBACS口座フィールドに新しいフィールドを追加するためのコードは、になるだろう:

add_filter('woocommerce_bacs_account_fields', 'custom_bacs_account_field', 10, 2); 
function custom_bacs_account_field($account_fields, $order_id) { 
    $account_fields['merkis' ] = array(
     'label' => $merkis, 
     'value' => $pasutijums 
    ); 
    return $account_fields; 
} 

コードは、いずれかのも、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルに行きますかプラグインファイル。

このコードはテストされ、機能している...

関連する問題