由于本地交付是唯一的选择(由于产品交付限制),我不希望客户进入结账页面并且必须填写所有详细信息,然后才发现我们没有提供他们的邮政编码。< / p>
因此,我需要在结帐页面检查本地交付邮政编码的相同功能,但是要在结帐过程的早期阶段添加,例如在购物车页面上?或者任何其他页面,就此而言。在添加到购物车选项之前,最佳位置可以在产品页面中。
即。 输入您的邮政编码,看看我们是否送货到您所在地区: 结果 - 显示是或否的消息以及进一步的说明
答案 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部分时才有效:
这将确保“本地投放”选项仅显示在列表中的邮政编码中。如果输入的邮政编码不在列表中,则本地交付选项将在表单下方的送货方式选项中消失。
只需将其添加到您的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
数组。