Перенаправление при покупке товаров из определенной категории товаров в Woocommerce


У меня есть этот код:

add_action('template_redirect', 'woo_custom_redirect');
function woo_custom_redirect( $redirect ) {

if (
    ! is_user_logged_in()       
    && (is_checkout())
    ) {
    wp_redirect( home_url( '/my-account/edit-account/' ) );
    return $redirect;
    }
}

Как я могу заменить условие перенаправления, когда я делаю заказ на покупку товара из определенной категории?

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

Author: LoicTheAztec, 2018-08-21

1 answers

Следующий код перенаправит на страницу моей учетной записи не зарегистрированного пользователя на странице оформления заказа, если у него есть товар из определенной категории товаров. Вам нужно будет указать в коде вашу конкретную категорию продукта:

add_action('template_redirect', 'woo_custom_redirect');
function woo_custom_redirect( $redirect ) {
    // HERE set your product category (can be term IDs, slugs or names)
    $category = 'posters';

    $found = false;

    // CHECK CART ITEMS: search for items from our product category
    foreach ( WC()->cart->get_cart() as $cart_item ){
        if( has_term( $category, 'product_cat', $cart_item['product_id'] ) ) {
            $found = true; 
            break;
        }
    }

    if ( ! is_user_logged_in() && is_checkout() && $found ) {
        wp_redirect( get_permalink( get_option('woocommerce_myaccount_page_id') ) );
        exit();
    }
}

Вводится код function.php файл вашей активной дочерней темы (или активной темы). Проверено и работает.

 3
Author: LoicTheAztec, 2018-08-21 05:20:29