在结帐页面上删除针对特定类别提交的帐户用户名和密码

时间:2019-07-10 07:16:08

标签: wordpress hook-woocommerce

希望每个人都做好。 我正在尝试从结帐页面删除帐户密码和帐户用户字段。 这段代码很完美。

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;

    }

}

1 个答案:

答案 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;
}

尝试上面的代码。