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