我找到了我的问题的答案,我在我的主题 function.php 中添加了过滤器 custom_override 并制作了我需要的 3 个字段,即用户名、密码和密码 2,然后在我的 form-billing.php 中简单地调用它
将此代码添加到我的 functions.php
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields( $fields ) {
$fields['account']['account_username'] = array(
'label' => __('Username', 'woocommerce'),
'placeholder' => _x('username', 'placeholder', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => true
);
$fields['account']['account_password'] = array(
'type' => 'password',
'required' => true,
'label' => __('Account password', 'woocommerce'),
'placeholder' => _x('Password', 'placeholder', 'woocommerce'),
'class' => array('form-row-wide')
);
$fields['account']['account_password-2'] = array(
'type' => 'password',
'required' => true,
'label' => __('Confirm your password', 'woocommerce'),
'placeholder' => _x('Re-password', 'placeholder', 'woocommerce'),
'class' => array('form-row-wide')
);
return $fields;
}
然后在我的 form-billing.php
中调用我的字段
woocommerce_form_field( 'account_username', $checkout->checkout_fields['account']['account_username'],
$checkout->get_value( 'account_username') );
woocommerce_form_field( 'account_password', $checkout->checkout_fields['account']['account_password'], $checkout->get_value( 'account_password') );
woocommerce_form_field( 'account_password-2', $checkout->checkout_fields['account']['account_password-2'], $checkout->get_value( 'account_password-2') );
注意:我在 form-billing.php 的这个循环中覆盖了这些行
<?php foreach ( $checkout->checkout_fields['billing'] as $key => $field ) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
它解决了我的问题,可能对你有帮助:)