希望每个人都做好。 我正在尝试从结帐页面删除帐户密码和帐户用户字段。 这段代码很完美。
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
unset($fields['account']['account_password']);
unset($fields['account']['account_password-2']);
unset($fields['account']['account_username']);
return $fields;
}
但是问题是,我仅在某些类别中删除了它。 所以我想按类别删除。 所以我的代码就是这样想的,但是行不通。
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
global $product;
$terms = get_the_terms( $product->ID, 'product_cat' );
foreach ($terms as $term) {
$product_cat = $term->slug;
}
if ($product_cat='age-defying-skincare') {
unset($fields['account']['account_password']);
unset($fields['account']['account_password-2']);
unset($fields['account']['account_username']);
return $fields;
}
}
答案 0 :(得分:0)
您正在使用动作挂钩。它无法更新或删除该字段。
do_action( 'woocommerce_created_customer', $customer_id, $new_customer_data, $password_generated );
如果要在用户字段中进行更改。
woocommerce_new_customer_data 。这是一个过滤器挂钩。
然后尝试使用此钩子:
$new_customer_data = apply_filters( 'woocommerce_new_customer_data', array(
'user_login' => $username,
'user_pass' => $password,
'user_email' => $email,
'role' => 'customer',
) );
您将在此处获得更多详细信息。 http://hookr.io/plugins/woocommerce/3.0.6/files/includes-wc-user-functions/
已更新: 用于WooCommerc结帐字段
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
$cart_items = WC()->cart->get_cart();
// Categories Array
$categories = array('age-defying-skincare');
foreach( $cart_items as $cart_item ){
if( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ) {
unset($fields['account']['account_password']);
unset($fields['account']['account_password-2']);
unset($fields['account']['account_username']);
}
}
return $fields;
}
尝试上面的代码。