php - 在 Woocommerce 结帐国家/地区选择字段中使美国成为第一
问题描述
我已经在 woocommerce 结帐时选择了美国作为我的默认国家/地区。除此之外,我还被要求在结帐表格中将“美国”移到国家/地区列表的最顶部。
我创建了一个新过滤器并像这样连接到“woocommerce_countries”钩子:
function change_country_order_in_checkout_form($countries)
{
$countries = array('US' => $countries['US']) + $countries;
return $countries;
}
add_filter( 'woocommerce_countries', 'change_country_order_in_checkout_form' );
我的国家列表得到了正确修改,但是 WooCommerce 中的某些东西按字母顺序对国家进行了排序,我想避免这种情况。我尝试添加:
remove_filter('woocommerce_sort_countries', 'wpautop');
但这似乎没有任何区别。任何帮助表示赞赏。
解决方案
为避免排序,您需要以woocommerce_sort_countries
这种方式使用过滤器挂钩:
add_filter('woocommerce_sort_countries', '__return_false');
并首先设置“美国”,试试这个:
add_filter( 'woocommerce_countries', 'change_country_order_in_checkout_form' );
function change_country_order_in_checkout_form($countries)
{
$usa = $countries['US']; // Store the data for "US" key
unset($countries["US"]); // Remove "US" entry from the array
// Return "US" first in the countries array
return array('US' => $usa ) + $countries;
}
代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。
推荐阅读
- github - 在 Github 操作脚本中检查数组中的元素
- reactjs - 如何让你的material-ui网格变成拖放元素
- java - 使用 java 客户端从 Kubernetes 命名空间中删除轮廓 httpproxy
- r - 使用 CEM 和 MatchIt R 包的不同结果
- mysql - 设置 lower_case_table_names 后无法启动 MySQL 8.0.12
- reactjs - reactjs 中 ng-init 的等价物
- python - Pyspark DF groupBy 给出错误 - TypeError: 'NoneType' object is not iterable
- python - os.getcwd() 找不到当前工作目录
- javascript - 在本机反应中不断收到“无法解析模块”
- apache-spark - 在 log4j.properties 文件中使用 %throwable 的异常 Stacktrace 日志未完全加载