【问题标题】:Woocommerce backorder notification in checkout page结帐页面中的 Woocommerce 缺货通知
【发布时间】:2018-02-27 17:21:07
【问题描述】:

我正在尝试添加一个操作,以检查当前仅在延期交货时可用的产品是否正在被签出 - 如果 一个或多个是,我想要在结帐表单前显示一条消息。

我已经走到这一步了:

add_action( 'woocommerce_before_checkout_form', 'wnd_checkout_message', 10 );
function wnd_checkout_message( ) {
echo '<div class="wnd-checkout-message"><h3>The message goes here!</h3></div>';}

但是我如何检查延期交货的产品当前是否正在结帐/是否在购物车中?

【问题讨论】:

    标签: php filter woocommerce conditional action


    【解决方案1】:

    将此代码添加到您的functions.php 文件中。如果您的购物车中的产品之一缺货,它将显示通知。

    add_action( 'woocommerce_before_checkout_form', 'es_checkout_add_cart_notice' );
    
    function es_checkout_add_cart_notice() {
        $message = "You have a backorder product in your cart.";
    
        if ( es_check_cart_has_backorder_product() ) 
            wc_add_notice( $message, 'error' );
    
    }
    
    function es_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;
    }
    

    【讨论】:

    • @W4yp01nt 没问题,请接受我的回答,我将不胜感激:)
    • Andrew,快速提问,如果我想在“处理订单”电子邮件的顶部添加相同的字符串(有条件地,也可以),有没有办法可以修改此代码以适应那个?
    • 您可以在此处查看电子邮件挂钩列表businessbloomer.com/woocommerce-visual-hook-guide-emails
    • @W4yp01nt 我修改了答案并添加了函数 wc_add_notice() 的使用
    • 您好@Andrew,您的修订似乎删除了所有通知?另外,我是否错误地假设我无法将其显示在电子邮件中的原因是因为它本质上是试图检查当时实际上不存在的购物车中产品的状态? (创建电子邮件的要点),我尝试连接所有电子邮件过滤器,但我根本无法显示。感谢您迄今为止的所有帮助,现在我将坚持在结帐页面中创建 div 的字符串:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 2021-11-12
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多