[英]Changing Postcode field in Woocmmerce's checkout page to drop-down
[英]Customizing checkout Postcode field into a custom drop-down menu
我正在建立一個基於 WooCommerce 的商店。 我有一個郵政編碼列表,每個郵政編碼都有不同的運費(有些提供免費送貨,有些提供統一費率)。
當客戶進入結賬頁面時,他需要在輸入字段中輸入他的郵政編碼。 根據郵政編碼,訂單預覽將顯示不同的運費總額(免費或統一費率)。
以下是class-wc-countries.php
輸入字段的樣子:
public function get_default_address_fields() {
$fields = array(
'postcode' => array(
'label' => __( 'Postcode/ZIP', 'woocommerce' ),
'required' => true,
'class' => array( 'form-row-first', 'address-field' ),
'clear' => true,
'validate' => array( 'postcode' ),
'autocomplete' => 'postal-code',
),
);
但是,我想要做的是將這個字段變成一個下拉菜單,這樣客戶就可以選擇他的郵政編碼選項而不是輸入它。
我設法將其下拉,但是每當我選擇任何選項時,它似乎都不會像輸入字段那樣更改運輸總額。
這是我所做的:
public function get_default_address_fields() {
$fields = array(
'postcode' => array(
'label' => __( 'Postcode/ZIP', 'woocommerce' ),
'required' => true,
'class' => array( 'form-row-first', 'address-field' ),
'clear' => true,
'validate' => array( 'postcode' ),
'autocomplete' => 'postal-code',
'type' => 'select',
'options' => array(
'opt1' => "001122", "112200", "334400")
),
);
但這不起作用。
我錯過了什么嗎?
如何讓這些下拉選項更改運費總額?
謝謝
這將部分回答您的問題,並只向您展示自定義結帳字段的方法。
覆蓋核心文件並不是真正的事情,因為每次更新 Woocommerce 時您都會丟失所有內容,因此不建議這樣做。
要以干凈的方式覆蓋結帳字段,首先您需要使用掛接在這兩個過濾器鈎子之一中的自定義函數:
woocommerce_default_address_fields
(自定義帳單和送貨地址默認字段時)woocommerce_checkout_fields
(自定義帳單或送貨地址字段以及其他字段時)。相關官方文檔: 使用操作和過濾器自定義結帳字段
所以在這里我選擇了第一個鈎子,我更正了你的郵政編碼數組。 你會得到:
這是功能和經過測試的代碼:
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_postcode_field' );
function custom_override_default_postcode_field( $address_fields ) {
// Your postcodes array
$postcode_array = array(
'opt1' => "001122",
'opt2' => "112200",
'opt3' => "334400"
);
$address_fields['postcode']['type'] = 'select';
$address_fields['postcode']['options'] = $postcode_array;
return $address_fields;
}
代碼位於活動子主題(或主題)的 function.php 文件或任何插件文件中。
由於選擇一個post-code是一個實時的前端事件,你需要使用一個復雜的javascript/ajax腳本和一些遠程php函數來實現你想要做的事情,這是一個真正的開發......這也取決於在您的設置上並且處理起來很復雜,因為在該結帳頁面中已經有一些 woocommerce ajax 腳本在運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.