2017-02-11 47 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文件或也以任何插件文件。

该代码测试和工程...