为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
大话西游666 2023-04-02 10:16:25
我已经尝试从这个例子开始工作(动态信息基于运输方式和购物车总计在 Woocommerce 中),但是我的动态消息显示了两次。任何帮助是极大的赞赏。本质上,我想做的是,如果用户的送货不在送货区域(使用 WooCommerce 的“您的其他区域未涵盖的位置”送货区域),则显示一条消息。只有当用户不在定义的运输区域时,该消息才会正确显示 - 但它会加倍。一个似乎在 ajax 刷新之内,另一个似乎在它之外。不完全确定它是如何或为什么这样做的。//add message to CHECKOUT if outside delivery areaadd_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/ - 添加产品并转到结帐页面。
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

这里的主要问题是你试图在结束 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 area

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

function outside_delivery_checkout() {

    $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' ) {

        $html  = '<tr class="delivery-message"><td colspan="2"><div class="outside-delivery checkout">

            <strong>' . __("PLEASE NOTE:") . '</strong><br />';

        $html .= __("Your shipping destination is outside of our normal delivery area. Our team will call you to calculate an additional fuel surcharge.");

        $html .= ' <strong>' . __("Please refresh the page after updating your shipping settings.") . '</strong>';

        echo $html . '</div></td></tr>';

    }

}

代码进入您的活动子主题(或活动主题)的 functions.php 文件。测试和工作。


查看完整回答
反对 回复 2023-04-02
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信