【发布时间】:2018-11-15 14:30:56
【问题描述】:
我想做一些简单的事情:不要将特定产品运送到加拿大。
在我看来,这是最简单的方法:如果该特定产品存在于购物车中,请将加拿大从结帐页面中删除。
特定产品:
1- https://constructioncovers.com/product/insulated-cement-curing-blankets/ (ID: 12616)
2- https://constructioncovers.com/product/insulated-construction-tarps/ (ID: 15631)
我的研究:
本文为我提供了一种在购物车中查找产品并在条件为真时执行任何操作的方法:https://businessbloomer.com/woocommerce-easily-check-product-id-cart/ 本文为我提供了一种从结帐页面中删除特定国家/地区的方法How to remove specific country in WooCommerce 我已经组合并修改了这两个代码以尝试和完成我的任务。这是我的代码:
function unset_country_on_condition( $country ) {
$product_id = 15631;
$product_id_2 = 12616;
$product_cart_id = WC()->cart->generate_cart_id( $product_id );
$product_cart_id_2 = WC()->cart->generate_cart_id( $product_id_2 );
$in_cart = WC()->cart->find_product_in_cart( $product_cart_id );
$in_cart_2 = WC()->cart->find_product_in_cart( $product_cart_id_2 );
if ( $in_cart || $in_cart_2 ) {
unset($country["CA"]);
return $country;
}
}
add_filter( 'woocommerce_countries', 'unset_country_on_condition', 10, 1 );
但是上面的功能不起作用
。它使国家/地区下拉列表为空,从而导致站点范围内的警告通知。
有人能指出我做错了什么吗?
【问题讨论】:
-
查看类似答案here
-
@Jamie_D 感谢该链接,但该部分在我的代码中工作正常(尽管我同意未优化),实际问题是从结帐中取消设置国家/地区的代码。它以某种方式打破了国家下拉字段。我已经用截图更新了我的问题
-
将
return $country从if语句中移出是否有效?似乎现在它只在找到 2 个产品之一时返回列表,否则它什么也不返回(又名 null)。 -
将
return $country移到if语句之外会使代码无用。它什么也没做 -
您为什么不根据访问者国家/地区禁用这些产品的“添加到购物车”按钮?
标签: php wordpress woocommerce cart country