基于运输方式的动态信息显示两次

我已经尝试从这个例子开始工作(动态信息基于运输方式和购物车总计在 Woocommerce 中),但是我的动态消息显示了两次。任何帮助是极大的赞赏。


本质上,我想做的是,如果用户的送货不在送货区域(使用 WooCommerce 的“您的其他区域未涵盖的位置”送货区域),则显示一条消息。只有当用户不在定义的运输区域时,该消息才会正确显示 - 但它会加倍。一个似乎在 ajax 刷新之内,另一个似乎在它之外。不完全确定它是如何或为什么这样做的。


//add message to CHECKOUT if outside delivery area

add_action( 'woocommerce_review_order_after_shipping', 'outside_delivery_checkout', 20);

function outside_delivery_checkout() {

    global $woocommerce;

    if ( did_action( 'woocommerce_review_order_after_shipping' ) >= 2 ) {

        return once;

    }


    $chosen_shipping_method_id = WC()->session->get( 'chosen_shipping_methods' )[0];

    $chosen_shipping_method    = explode(':', $chosen_shipping_method_id)[0];

    $cart_subtotal             = WC()->cart->subtotal;


    if ($cart_subtotal && $chosen_shipping_method === 'free_shipping') {

        echo '<div class="outside-delivery checkout"><b>PLEASE NOTE:</b><br /> Your shipping destination is outside of our normal delivery area. Our team will call you to calculate an additional fuel surcharge. <strong>Please refresh the page after updating your shipping settings.</strong></div>';

    } elseif ($cart_subtotal && $chosen_shipping_method != 'free_shipping') {

        // do nothing

    }

}

这是问题的链接: https: //redstarrolloffqc.com/dumpster-sizes-rates/ - 添加产品并转到结帐页面。


大话西游666
浏览 86回答 1
1回答

千巷猫影

这里的主要问题是你试图在结束 html 标签之后的html 中<div>插入一个带有一些内容的 html 标签......<table></tr>所以显示的 Html 中断,即使它看起来没有。相反,您应该使用以下 html 结构:<tr><td colspan="2"><div>Your formatted text (message)</div></td></tr>现在did_action()条件对您的代码没有影响,也不global $woocommerce是必需的(并且已经过时了一段时间)。这样您的内容将显示在表格行中,因为它应该。这将彻底解决您的问题……所以你的代码将是这样的://add message to CHECKOUT if outside delivery areaadd_action( 'woocommerce_review_order_after_shipping', 'outside_delivery_checkout', 20);function outside_delivery_checkout() {&nbsp; &nbsp; $chosen_shipping_method_id = WC()->session->get( 'chosen_shipping_methods' )[0];&nbsp; &nbsp; $chosen_shipping_method&nbsp; &nbsp; = explode(':', $chosen_shipping_method_id)[0];&nbsp; &nbsp; $cart_subtotal&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= WC()->cart->subtotal;&nbsp; &nbsp; if ( $cart_subtotal && $chosen_shipping_method === 'free_shipping' ) {&nbsp; &nbsp; &nbsp; &nbsp; $html&nbsp; = '<tr class="delivery-message"><td colspan="2"><div class="outside-delivery checkout">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <strong>' . __("PLEASE NOTE:") . '</strong><br />';&nbsp; &nbsp; &nbsp; &nbsp; $html .= __("Your shipping destination is outside of our normal delivery area. Our team will call you to calculate an additional fuel surcharge.");&nbsp; &nbsp; &nbsp; &nbsp; $html .= ' <strong>' . __("Please refresh the page after updating your shipping settings.") . '</strong>';&nbsp; &nbsp; &nbsp; &nbsp; echo $html . '</div></td></tr>';&nbsp; &nbsp; }}代码进入您的活动子主题(或活动主题)的 functions.php 文件。测试和工作。
打开App,查看更多内容
随时随地看视频慕课网APP