2017-02-11 14 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 файл вашей активной темы ребенка (или темы), или же в любой файл плагина.

Этот код проверен и работает ...