在下订单之前,woocommerce检查邮政编码

时间:2014-07-23 11:28:13

标签: wordpress wordpress-plugin woocommerce

由于本地交付是唯一的选择(由于产品交付限制),我不希望客户进入结账页面并且必须填写所有详细信息,然后才发现我们没有提供他们的邮政编码。< / p>

因此,我需要在结帐页面检查本地交付邮政编码的相同功能,但是要在结帐过程的早期阶段添加,例如在购物车页面上?或者任何其他页面,就此而言。在添加到购物车选项之前,最佳位置可以在产品页面中。

即。 输入您的邮政编码,看看我们是否送货到您所在地区: 结果 - 显示是或否的消息以及进一步的说明

2 个答案:

答案 0 :(得分:2)

您可以使用woocommerce_cart_coupon挂钩向购物车添加新字段,然后您可以使用template_redirect挂钩创建处理程序。

以下我们在以下网站上使用的内容:

add_action( 'woocommerce_cart_coupon', array(&$this, 'new_woocommerce_cart_coupon'), 10, 0 );
add_action( 'template_redirect', array(&$this, 'new_post_code_cart_button_handler') );

public function new_woocommerce_cart_coupon() {
    ?>
        <br/><br/><p>Enter your postcode</p><label for="post_code">Post Code</label> <input type="text" name="post_code" class="input-text" id="post_code" value="" /> <input type="submit" class="button" name="apply_post_code" value="Check Post Code" />
    <?php
}

public function new_post_code_cart_button_handler() {
    if( is_cart() && isset( $_POST['post_code'] ) && $_SERVER['REQUEST_METHOD'] == "POST" && !empty( $_POST['post_code'] ) ) {
      //validate post code here
    }
}

答案 1 :(得分:0)

听起来您最好的选择是将PostCode字段放在“结算明细”表单的顶部。

这样,一旦PostCode填满,运输方法将相应调整。一旦用户下载表单,如果他们的邮政编码不允许,则本地送货方法将不再可用。

此解决方案仅在您将实际投放的所有邮政编码放入WooCommerce信息中心的本地投放设置的PostCode部分时才有效:

enter image description here

这将确保“本地投放”选项仅显示在列表中的邮政编码中。如果输入的邮政编码不在列表中,则本地交付选项将在表单下方的送货方式选项中消失。

只需将其添加到您的functions.php文件中:

//Rearrange the Fields in the Checkout Billing Details Form
add_filter("woocommerce_checkout_fields", "new_order_fields");

function new_order_fields($fields) {

$order_list = array(
    "billing_postcode",
    "billing_first_name", 
    "billing_last_name",
    "billing_email", 
    "billing_phone",        
    "billing_company", 
    "billing_address_1", 
    "billing_address_2",         
    "billing_country"        

);
foreach($order_list as $field)
{
    $ordered_fields[$field] = $fields["billing"][$field];
}

$fields["billing"] = $ordered_fields;
return $fields;

}

根据您的偏好重新排列$order_list数组。