在Woocommerce结帐中为缺货的购物车商品添加自定义通知

时间:2018-11-25 19:48:29

标签: php wordpress woocommerce checkout notice

我正在尝试添加一个操作,以检查缺货的购物车中是否有某种产品,如果为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 :(得分:1)

当购物车中有缺货商品时,以下代码将在结帐页面上显示自定义消息:

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