Добавить пользовательское уведомление для товаров с упорядоченными корзинами в кассе Woocommerce - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь добавить действие, которое будет проверять, есть ли товар в корзине в заказе, и если true, отображать сообщение перед формой оформления заказа.Это то, что у меня есть, но, похоже, это не работает.Я что-то испортил?

add_action( 'woocommerce_before_checkout_form', 'checkout_add_cart_notice' );
function checkout_add_cart_notice() {
$message = "Please allow 2-3 weeks for the custom order product.";

if ( check_cart_has_backorder_product() ) 
    wc_add_notice( $message, 'error' );

}

function check_cart_has_backorder_product() {
foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
    $cart_product =  wc_get_product( $values['data']->get_id() );

    if( $cart_product->is_on_backorder() )
        return true;
}

return false;
}

1 Ответ

0 голосов
/ 25 ноября 2018

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

add_action( 'woocommerce_before_checkout_form', 'backordered_items_checkout_notice' );
function backordered_items_checkout_notice() {
    $found = false;

    foreach( WC()->cart->get_cart() as $cart_item ) {
        if( $cart_item['data']->is_on_backorder( $cart_item['quantity'] ) ) {
            $found = true;
            break;
        }
    }

    if( $found ) {
        wc_print_notice( __("Please allow 2-3 weeks for the custom order product.", "woocommerce"), 'notice' );
    }
}

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

enter image description here

...