我有这种情况 - 我对其中一个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
)
如何在不覆盖核心文件的情况下插入自定义代码?
由于
答案 0 :(得分:7)
从不覆盖核心文件,并始终使用包含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文件中,或者放在任何插件文件中。
此代码经过测试并有效......