Добавление настраиваемого поля в поля учетной записи BACS без переопределения основных файлов

У меня такая ситуация — я внес изменения в один из шаблонов электронной почты woocommerce, но я уверен — эти изменения будут потеряны после следующего обновления 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
)

Как я могу вставить свой код без переопределения этого файла ядра?

Спасибо

5

Решение

Никогда не переопределяйте основные файлы и всегда используйте хуки 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 вашей активной дочерней темы (или темы) или также в любой файл плагина.

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

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]