- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发现下面的代码看起来应该可以实现我想要的功能。但经测试,它不起作用。
我们需要在某些州取消第二天的空运。例如,我们位于宾夕法尼亚州,如果有人从那里购买,我们不希望显示该选项。
add_filter( 'woocommerce_package_rates', 'unset_ups_shipping_rates_for_specific_states' , 10, 2 );
function unset_ups_shipping_rates_for_specific_states( $rates, $package ) {
// Setup an array of states that do not allow UPS Shipping 2nd Day Air. As of 10/18/2015 we added 3 days ground too.
$excluded_states = array( 'FL','AL','KY','LA','MS','TN','GA','SC','NC','KY','DC','VA','AR','CT','DE','IL','IN','KS','MA','ME','MD','MN','MI','MO','NH','NJ','NY','OH','OK','PA','RI','TX','VT','WV','WI' );
foreach ( WC()->cart->get_shipping_packages() as $package ) {
if( in_array( $package, $excluded_states ) ) :
unset( $rates['sups:02:0'] ); // Unset 2-Day Air
unset( $rates['ups:02'] );
unset( $rates['sups:12:0'] ); // Unset 3-Day Select too
unset( $rates['ups:12'] );
else:
unset( $rates['sups:03:0'] ); // Unset Ground
unset( $rates['ups:03'] );
endif;
}
// Return what's left of the $rates array
return $rates;
}
如何使此代码能够根据州取消设置特定的运输方式?
编辑:使用 Aztec 的答案,我做了一个 var_dump($rates) 因为它不起作用并得到:
array(2) {
["UPS-Ground"]=> object(WC_Shipping_Rate)#1486 (6) {
["id"]=> string(10) "UPS-Ground"
["label"]=> string(10) "UPS Ground"
["cost"]=> string(5) "11.60"
["taxes"]=> array(0) { }
["method_id"]=> string(20) "easypostshippingtool"
["meta_data":"WC_Shipping_Rate":private]=> array(0) { }
}
["UPS-2ndDayAir"]=> object(WC_Shipping_Rate)#1514 (6) {
["id"]=> string(13) "UPS-2ndDayAir"
["label"]=> string(13) "UPS 2ndDayAir"
["cost"]=> string(5) "23.31"
["taxes"]=> array(0) { }
["method_id"]=> string(20) "easypostshippingtool"
["meta_data":"WC_Shipping_Rate":private]=> array(0) { }
}
}
您认为 easypostshippingtool 是否会干扰解决方案?另外,我不确定#1486 是什么。如果我将代码放入文本编辑器中,它会注释掉代码。
最佳答案
相反,您应该直接使用 Hook 函数中提供的 $package
参数来以这种方式获取客户目标状态:
add_filter( 'woocommerce_package_rates', 'shipping_rates_for_specific_states', 10, 2 );
function shipping_rates_for_specific_states( $rates, $package ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
# Setup an array of states that do not allow UPS Shipping 2nd Day Air.
# As of 10/18/2015 we added 3 days ground too.
$excluded_states = array(
'FL','AL','KY','LA','MS','TN','GA','SC','NC','KY',
'DC','VA','AR','CT','DE','IL','IN','KS','MA','ME',
'MD','MN','MI','MO','NH','NJ','NY','OH','OK','PA',
'RI','TX','VT','WV','WI'
);
$destination_state = $package['destination']['state'];
if( in_array( $destination_state, $excluded_states ) ) {
unset( $rates['sups:02:0'] ); // Unset 2-Day Air
unset( $rates['ups:02'] );
unset( $rates['sups:12:0'] ); // Unset 3-Day Select too
unset( $rates['ups:12'] );
} else {
unset( $rates['sups:03:0'] ); // Unset Ground
unset( $rates['ups:03'] );
}*/
return $rates;
}
此代码位于事件子主题(或主题)的 function.php 文件中或任何插件文件中。
此代码在 WooCommerce 2.6.x 到 3.0+ 上进行了测试,应该适用于您的自定义费率。
You will need to refresh shipping cached data: disable, save and enable, save related shipping methods for the current shipping zone, in woocommerce shipping settings.
相关答案:Tiered Shipping with multiple Shipping rates options and prices
关于php - 根据州删除特定的 WooCommerce 运输方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43574300/
我有一个Rails应用程序,它的搜索系统取决于elasticsearch,我已经使用盆景插件将其推到heroku上,但是每当我尝试在我的应用程序上搜索内容时,都会在日志中给我这个错误。 2017-07
有什么方法可以禁用 Magento 中的购物卡/结账/送货选项吗? 我正在开发一个产品比较网站,其价格是从联属网站列出的。 我实际上并没有在我的网站上销售任何东西。 最佳答案 aDVo,如果禁用以下m
这是关于 iOS 设备蓝牙配件开发的指导请求。 公开可用的文档/讨论似乎有限;我认为这是由于 MFI NDA。 如果配件开发像一般的 iOS 开发一样易于访问,我没有找到我期望的 iOS 蓝牙配件的数
我有下一个问题: 我在名为的汽车的榻榻米中有一个水桶。 我在Elasticsearch中具有索引-名为测试 我映射了我的文档。 在 elasticsearch 配置中,我设置了: couchbase.
我遇到了 woocommerce 运输问题,这是我在购物车页面上遇到的错误。 Fatal error: Call to a member function get_label() on null in
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
您好,我正在使用 WooCommerce 为客户创建一个 wordpress 网站。该站点已完成,但客户希望能够从 shop_order 页面创建发货。我已经弄明白了大部分,问题是我对 UPS API
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
用户从桶中选择 1 到 {N} 个产品 对于每个产品,供应商提供 {N} 个报价 我想给用户机会告诉他 我想要的输出: 如果您从供应商 (A) 处购买 5 件产品的总成本为 87 美元 如果您从供应商
FedEx 运输 API 是否具有 SOAP 端点?我找不到 WSDL 端点。 最佳答案 自从这里的其他 2 个答案以来,他们的网站已经更改。 最直接的答案是他们没有经典的 WSDL 端点,您只需在其
我正在将 Nodejs UPS 运输 API 与我的网站集成。我正在使用this模块。我使用了取货API。但它抛出错误 Missing or invalid AccountNumber UPS 。添加
我是一名优秀的程序员,十分优秀!