首先,要使地理定位正常工作,请转到WooCommerce>状态并检查MaxMind GeoIP database
选项,如果有红色复选标记,请按照提供的说明下载数据库。
然后可以将此代码添加到主题中(在functions.php
) 或将其添加为插件或code snippet 因为在更新主题时,主题中的更改可能会丢失。
function wpse_287199_woo_checkout_country( $fields ) {
$geoData = WC_Geolocation::geolocate_ip();
$countries = WC()->countries->get_countries();
$fields[\'billing\'][\'billing_country\'] = array(
\'type\' => \'select\',
\'label\' => __(\'Country\', \'woocommerce\'),
\'options\' => array(
$geoData[\'country\'] => $countries[$geoData[\'country\']]
),
\'class\' => array(
\'form-row-wide\',
\'address-field\',
\'update_totals_on_change\'
)
);
$fields[\'shipping\'][\'shipping_country\'] = array(
\'type\' => \'select\',
\'label\' => __(\'Country\', \'woocommerce\'),
\'options\' => array(
$geoData[\'country\'] => $countries[$geoData[\'country\']]
),
\'class\' => array(
\'form-row-wide\',
\'address-field\',
\'update_totals_on_change\'
)
);
return $fields;
}
add_filter( \'woocommerce_checkout_fields\' , \'wpse_287199_woo_checkout_country\' );
此代码检查客户的IP地理位置并确定其所在国家,然后将其作为唯一选项用于装运和计费。