如何限制某些产品仅限本地发货(一系列邮政编码)? P.S:其他产品可能在当地和/或全国范围内发货。
这种情况的情况是: 用户选择产品,将其添加到购物车,结帐,输入送货地址,然后系统会通知他该商品仅可在本地发货。
我检查了Woocommerce上的所有设置,但没有任何效果。
提前致谢,
答案 0 :(得分:0)
如果这不起作用,则可以对其进行编码:
您需要将某些产品标记为“仅本地交货”,而不必将其标记为“仅本地交货”。这样,您可以在结帐时显示适当的运送选项。您还需要知道用户的邮政编码等。
第1步:将标志添加到产品中。
在产品上创建一个复选框,以允许您将其标记为本地发货商品。
下面的代码将在“产品”->“产品数据”->“高级”中添加选项
add_action('woocommerce_product_options_advanced', 'localship_options');
function localship_options()
{
echo '<div class="options_group">';
woocommerce_wp_checkbox(array(
'id' => 'localship',
'value' => get_post_meta(get_the_ID(), 'localship', true),
'label' => 'Local Ship',
'desc_tip' => true,
'description' => 'Only ships locally',
));
echo '</div>';
}
add_action('woocommerce_process_product_meta', 'localship_save_fields', 10, 2);
function localship_save_fields($id, $post)
{
if (!empty($_POST['localship'])) {
update_post_meta($id, 'localship', $_POST['localship']);
} else {
delete_post_meta($id, 'localship');
}
}
要查看产品是否被标记,请使用get_post_meta。您需要的ID 产品
$is_localship = get_post_meta( /*product id here */, 'localship', true);
现在,您可以使用$is_localship
来查看该产品是否为本地运输。
步骤2:检查买方的邮政编码
您需要获取用户的订单信息。
wc_get_order函数应执行以下操作:
$order = wc_get_order( $order_id )
您应该可以从那里提取用户的地址,邮政编码等。
查看购买者的邮政编码is in an array of是否是本地邮政编码。
第3步:相应地显示或隐藏送货
现在您知道该产品是否仅是本地发货,并且邮政编码是匹配的,您可以在模板中显示或隐藏发货选项。
您可以使用$is_localship
在模板中显示或隐藏运送箱。
这应该使您朝正确的方向前进。