Удалите имя пользователя и пароль для определенной категории на странице оформления заказа. - PullRequest
0 голосов
/ 10 июля 2019

Надеюсь, у каждого дела идут хорошо.Я пытаюсь удалить пароль учетной записи и поле пользователя учетной записи со страницы оформления заказа.Этот код работает идеально.

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 голосов
/ 10 июля 2019

Вы используете ловушку действия.Он не может обновить или удалить поле.

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

Попробуйте приведенный выше код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...