禁用自动购物车/checkout_update添加手动选项以在下单前进行更新



当前问题:我的结账计算器刷新运费的频率太高了,目前当我更改付款方式时,或者当我选择不同的运费方式时,以及当我更改地址字段或修改购物车中的数量时,它都会更新/刷新运费;它甚至在浏览器中打开购物车时也会这样做。

我正在努力实现的目标:我希望结账/购物车计算器停止自动更新/刷新运费,直到结账结束,在我将所有归因因素输入到打电话所需的适当字段后,它应该放置1

我已经阅读了数百篇文章,但我看到的只是确保某些Ajax调用的结账计算器刷新的方法——我需要将其禁用。我还是新来的,所以我很抱歉,如果我违反了一些协议,请原谅,任何帮助都将不胜感激。

更新:经过思考,我觉得一个完美的解决方案(如果可能的话)是在结账计算发货区放一个按钮,或者通过下订单按钮,这将允许我或客户手动提取运费API并在必要时更新总额,并取消整个自动过程(这也将使我受益,因为wooccommerce将在每次按键后停止尝试拨打新电话),但这也需要一个功能或类似的东西来阻止下订单,除非在下订单按钮之前按下了这个手动按钮(在更改地址字段、更改运输方式或任何其他会影响订单总额的因素时,他们需要再次按下它,不包括姓名、电话号码、公司名称或任何其他你能想到的不会影响订单总数的字段)。

8小时后-我还在为此而头疼——没有真正的结果。我唯一完成的就是用这个把运费计算隐藏在购物车里

function disable_shipping_calc_on_cart( $show_shipping ) {
if( is_cart() ) {
return false;
}
return $show_shipping;
}
add_filter( 'woocommerce_cart_ready_to_calc_shipping',       'disable_shipping_calc_on_cart', 99 );

但它并没有真正停止API调用,只是隐藏了它。虽然我认为不必为字段生成UI可能会节省一些时间,但这只是一个微不足道的数量。如果购物车只显示订单总额/税收明细,就像在桌面下拉菜单或移动侧边栏中一样,这将大大加快我的购物车体验。不管怎样,我宁愿它不在手推车里
令人沮丧的是,如果整个自动更新只等待最后按下一个按钮,我会节省很多时间。以及我的客户。我的意思是,这难道没有意义吗。让我通过一轮又一轮的测试来描述我的工作流程。八个支付网关自定义配置的规则授予可见性需要通过每个变量进行测试&以下是测试前端的方法(至少在我的情况下,我对此非常陌生&我甚至从未考虑过建立一个网站,直到3-4个月前有人联系我)。我将直接进入购物车的部分,从我的众多订单中选择一个,从而缩短整个体验。

购物车在浏览器中打开。。。运送API调用10-15秒进行回调,如果需要更新一些订单数量。。。运送API调用10-15秒,(如上所述,这里没有可见的运送计算。所以感谢上帝,我不能被另一个绊倒…运送API调用10-15秒时仍然在购物车中),继续结账,帐户凭据自动填充字段。。。运输API呼叫10-15秒,我可能需要测试更大距离的运输或商业/住宅费率,因此更改地址字段。。。。发货API调用10-15秒,选择发货方式。。。发货API调用10-15秒,选择付款方式和方式。。。yep航运API呼叫10-15秒……&最后我可以通过前端下订单了(听起来很累?绕过所有的Shipping API调用,在结账结束时只做了1次,这难道没有意义吗?嗯,这就像是结账体验中可能损失的2分钟时间。该调用本应在10-15秒手动按下按钮进行更新后解决。

IDK大约10个小时后。。。当我从除了邮政编码之外的所有签出字段中删除update_totals_on_change时,我又取得了一些进展。我之所以启用ZIP,是因为我担心这种方法可能允许您运行订单流程的其余部分。然后回到发货字段更改地址,不触发update_total并进行订单处理。在这一点上,我不确定这是否必要,但我认为如果有任何因素真正影响订单总额,那将是邮政编码&如果所有其他地址字段与邮政编码不相关,我的发货API将不允许订单处理。所以我觉得更安全。因此,这将为这些字段节省大量时间(尽管这些字段不会像运输和支付无线电那样在API调用时锁定,但至少它可以节省你在最后一次按键后等待1的时间。除非最后一次键击在ZIP字段中,否则我可能需要将字段重新定位到表单的更靠上的位置,以便在流程中更早开始。Whoops long切线但大声思考…)hmmm如果只有自动流程允许你在通话中切换这些收音机,你可以一次完成订单,并允许整个过程一直做它的事情,最终解决问题,这在开销方面似乎有点低效,但听起来像是我想到的最理性的想法。。。是的,解锁所有字段/收音机,不管怎样。。。。API正在处理。。。我所得到的是一种在更新/刷新期间无法与之交互的灰色区域的方法。。。有什么想法吗?

第二天-在分娩中昏倒后,我没有时间测试从运输字段中删除update_totals_on_change的效果。不幸的是,我今天早上发现这件事毫无成就。所有地址字段仍然在更改时自动更新,令人失望。我正在考虑添加更好的可用性插件,以便在结账时更改数量。这将至少消除任何进入购物车页面的需要。这样就可以省去一两步。

另一个更新:所以我在wp-content/plugins/woocommerce/templates/checkout/payment.php 中找到了这段代码

<?php esc_html_e( 'Since your browser does not support JavaScript, or it is disabled, please ensure you click the <em>Update Totals</em> button before placing your order. You may be charged more than the amount stated above if you fail to do so.', 'woocommerce' ); ?>
<br/><button type="submit" class="button alt" name="woocommerce_checkout_update_totals" value="<?php esc_attr_e( 'Update totals', 'woocommerce' ); ?>"><?php esc_html_e( 'Update totals', 'woocommerce' ); ?></button>
</noscript>

所以,如果您的浏览器不支持java脚本,似乎有一些东西会支持上述按钮。然而,我不想为我的整个网站禁用javascript,但也许我只能在结账时禁用它,除了在结账时生成上面的按钮外,它不会产生太大影响。考虑到这一点,任何建议都将不胜感激。

新信息-所以在一次又一次地翻来覆去之后。我发现,通过禁用jquery blockui脚本,它将允许我在结账时更改任何字段,而无需在调用期间锁定。然而,当禁用时,在字段更改时不会拨打电话,所以我需要找到一种手动启动电话的方法,然后以某种方式将其锁定,这样客户必须在下单前立即更新。

这不是你问题的完整答案,但我正努力解决同样的问题。支持HTTP API运输计算所需的Woommerce运输修改

尽管我已经通过将以下内容添加到我的自定义运输插件的calculate_shipping方法中,成功地阻止了它调用和计算购物车上的运输项目添加/修改。

if ('https://aaa.bbb/checkout/' !== $_SERVER['HTTP_REFERER']) {
return;
} 

我开始觉得我需要像你一样做,添加一个在订购前必须按下的计算发货按钮。在允许完成签出之前,它还必须在任何地址更新之后再次运行。

你在过去的几个月里解决了你的问题吗?如果是的话,我们将感谢您的解决方案!?!

最新更新