Woocommerce - 产品仅运往当地少数几个城市

时间:2017-08-14 20:25:56

标签: php wordpress woocommerce e-commerce hook-woocommerce

如何限制某些产品仅限本地发货(一系列邮政编码)? P.S:其他产品可能在当地和/或全国范围内发货。

这种情况的情况是: 用户选择产品,将其添加到购物车,结帐,输入送货地址,然后系统会通知他该商品仅可在本地发货。

我检查了Woocommerce上的所有设置,但没有任何效果。

提前致谢,

1 个答案:

答案 0 :(得分:0)

尝试寻找插件: https://woocommerce.com/product-category/woocommerce-extensions/shipping-methods/delivery-shipping-options/

如果这不起作用,则可以对其进行编码:

您需要将某些产品标记为“仅本地交货”,而不必将其标记为“仅本地交货”。这样,您可以在结帐时显示适当的运送选项。您还需要知道用户的邮政编码等。

第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在模板中显示或隐藏运送箱。

这应该使您朝正确的方向前进。