WooCommerce cart.php显示延迟消息

时间:2016-12-08 11:22:55

标签: php wordpress woocommerce cart hook-woocommerce

我正在尝试在购物车中的商品下显示消息。如果产品延期交货,它会显示延期交货通知,因此我希望在没有延期交货通知显示时显示另一条消息。

我尝试的代码是:

// Backorder notification
if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
    echo '<p class="backorder_notification">' . esc_html__( 'Available in 3-5 Working Days', 'teencode' ) '</p>';
}
else; {
    echo '<p class="backorder_notification">' . esc_html__( 'Available Next Day', 'teencode' ) '</p>';
}

但是,查看购物车时,它不显示消息。

我哪里错了?

1 个答案:

答案 0 :(得分:1)

您可以根据代码(条件)尝试使用 woocommerce_before_cart 连接的自定义函数来显示自定义通知。你的代码中有很多小错误。

以下是代码:

add_action( 'woocommerce_before_cart', 'custom_backorders_notifications' );
function custom_backorders_notifications(){

    $backorders_notification = false;

    foreach( WC()->cart->get_cart() as $cart_item ):
        $product_id = $cart_item['product_id']; // get the product ID for the current cart item
        $item_qty = $cart_item['quantity']; // get the cart item quantity
        $product = wc_get_product($cart_item['product_id']); // get the $product OBJECT

        // Backorder notification with your existing (untested) condition
        if ( $product->backorders_require_notification() && $product->is_on_backorder( $item_qty ) ){
            $backorders_notification = true;
            break;
        }

    endforeach;

    if ( $backorders_notification )
        echo '<p class="backorder_notification">' . esc_html__( "Available in 3-5 Working Days", "teencode" ) . '</p>';
    else
        echo '<p class="backorder_notification">' . esc_html__( "Available Next Day", "teencode" ) . '</p>';
}

此代码经过测试并有效。

代码进入活动子主题(或主题)的function.php文件。或者也可以在任何插件php文件中。