2017-02-11 56 views
5

我有這種情況 - 我對其中一個woocommerce電子郵件模板進行了更改,但我確信 - 在下次woocommerce更新後這些更改將會丟失。在不覆蓋核心文件的情況下向BACS帳戶字段添加自定義字段

據我所知,我應該使用主題函數來繞過這個問題。

這是修改前的代碼:

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

你可以在google中搜索只需輸入:'woocommerce_bacs_account_fields',你會發現所有相關的問題和答案arround this ... – 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文件或也以任何插件文件。

該代碼測試和工程...

相關問題