Требуется регистрация в WooCommerce для конкретного продукта

#php #wordpress #woocommerce #product #checkout

#php #wordpress #woocommerce #продукт #Оформить покупку

Вопрос:

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

Однако для одного продукта я хотел бы потребовать регистрации.

Что-то вроде

 $product_id = $product->get_id();

if ($product_id !== 1024) {

  remove_action( 'woocommerce_before_checkout_registration_form', 'action_woocommerce_checkout_registration_form', 10, 1 );

}
 

но, очевидно, это не так просто. Есть идеи?

Ответ №1:

Этот ответ предполагает, что WooCommerce> Настройки> Учетные записи и конфиденциальность> Разрешить клиентам размещать заказы без учетной записи включен

Затем вы можете использовать следующий код, который гарантирует, что при наличии 1 или более productID's товаров в корзине регистрация при оформлении заказа будет обязательной

 function filter_woocommerce_checkout_registration_required( $bool_value ) {
    // Several can be added, separated by a comma
    $product_ids = array ( 30, 813 );
    
    // Loop through cart items
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        // Product ID from cart item in specific array
        if ( in_array( $cart_item['product_id'], $product_ids ) ) {
            // Registration_required
            $bool_value = true;
                    
            // Break loop
            break;
        }
    }

    return $bool_value;
}
add_filter( 'woocommerce_checkout_registration_required', 'filter_woocommerce_checkout_registration_required', 10, 1 );