wc_countries - 国家选择下拉菜单 - woocommerce

2024-03-10

我正在努力设置一个带有默认 WooCommerce 国家和州选择下拉列表的表单。

基本上,我想显示国家/地区选择,然后根据国家/地区选择显示州选择。因此,如果用户选择英国,则会显示包含州选择的新下拉列表。

我到目前为止:

<?php
global $woocommerce;
$countries_obj   = new WC_Countries();
$countries   = $countries_obj->__get('countries');
$default_country = $countries_obj->get_base_country();
$default_county_states = $countries_obj->get_states( $default_country );

echo '<div id="ships_from_countries_field">' . __('Countries') . '';

    woocommerce_form_field('my_country_field', array(
           'type'       => 'select',
           'class'      => array( 'chzn-drop' ),
           'label'      => __('Item ships from - country'),
           'placeholder'    => __('Select a Country'),
           'options'    => $countries
            )
     );
 echo '</div>';

 echo '<div id="ships_from_state_field">' . __('States') . '';

     woocommerce_form_field('my_state_field', array(
            'type'       => 'select',
            'class'      => array( 'chzn-drop' ),
            'label'      => __('Item ships from - state'),
            'placeholder'    => __('Select a State'),
            'options'    => $default_county_states
             )
      );
  echo '</div>';
  ?>

国家/地区下拉列表显示国家和州下拉列表显示商店基地的状态 - 英国

但我如何让他们一起工作并保存价值观呢?

找不到任何信息,有人有任何进行这项工作的经验吗?


首先,有一个国家和州的类型......你不需要做太多......就像这样......

echo '<div id="ships_from_countries_field">' . __('Countries') . '';

    woocommerce_form_field('my_country_field', array(
       'type'       => 'country',
       'class'      => array( 'chzn-drop' ),
       'label'      => __('Item ships from - country'),
       'placeholder'    => __('Select a Country')
        )
    );
echo '</div>';

echo '<div id="ships_from_state_field">' . __('States') . '';

    woocommerce_form_field('my_state_field', array(
        'type'       => 'state',
        'class'      => array( 'chzn-drop' ),
        'label'      => __('Item ships from - state'),
        'placeholder'    => __('Select a State')
        )
    );
echo '</div>';

记下他们的类型...他们不是选择类型。

现在关于你的问题..

PHP

你需要有国家和州的本地化脚本......我不会继续如何使用wp_localize_script() https://codex.wordpress.org/Function_Reference/wp_localize_script。如果需要,请阅读链接。这是其中的一部分。

$wc_country = array(
    'country' => json_encode( array_merge( WC()->countries->get_allowed_country_states(), WC()->countries->get_shipping_country_states() ) )
);
wp_localize_script( 'my-js', 'my_js', $wc_country );

javascript

有了这个,在你的my-jsscript(脚本文件)你可以这样读取状态:

    var states_json = my_js.countries.replace( /&quot;/g, '"' ),
        states = $.parseJSON( states_json );

然后,您必须在您的国家/地区添加更改事件,并根据所选国家/地区重新填充状态...

例子:states["PH"]如果选择的国家是菲律宾

00: "Metro Manila"
ABR: "Abra"
AGN: "Agusan del Norte"
AGS: "Agusan del Sur"
AKL: "Aklan"
ALB: "Albay"
ANT: "Antique"
APA: "Apayao"
AUR: "Aurora"
BAN: "Bataan"
BAS: "Basilan"
BEN: "Benguet"
BIL: "Biliran"
.....
WSA: "Samar"
ZAN: "Zamboanga del Norte"
ZAS: "Zamboanga del Sur"
ZMB: "Zambales"
ZSI: "Zamboanga Sibugay"

然后你可以使用 jQuery 构建你的选项。

var options = '',
    state = states[ country ]; // country can be: var country = $('country').val();

for( var index in state ) {
    if ( state.hasOwnProperty( index ) ) {
        options = options + '<option value="' + index + '">' + state[ index ] + '</option>';
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wc_countries - 国家选择下拉菜单 - woocommerce 的相关文章

随机推荐

  • 设置php的时间限制

    我正在尝试在预订系统中设置时间限制 这样用户必须 可以删除其预订 但不能在输入预订后 1 分钟内删除
  • 检查 iOS 上是否安装了配置文件

    我正在尝试检查 iOS 设备上是否安装了 mobileconfig 文件 我尝试过此链接描述的方法http blog markhorgan com p 701 http blog markhorgan com p 701 但我失败了 也许有
  • 通过java列出weblogic中的所有用户

    有谁知道如何在java中列出所有weblogic用户 例如 安全领域有 5 个用户 我想获取所有用户 我该怎么做 这很容易 为了将来参考 如果您想查找诸如 我如何使用 weblogic 和 Java 做 X 之类的内容 请使用JMX在你的谷
  • IntelliJ IDEA 中的 Java 项目文件夹结构

    IntelliJ IDEA 中 Java 项目可接受的文件夹结构是什么 多个来源 像这样 https stackoverflow com a 28161314 4490400 建议采用以下结构 idea src main java com
  • svg:svg 是什么意思?

    这是什么意思 append svg svg 我在 HTML 和 D3 代码中看到了它 是否添加了SVG插件 在 XHTML 代码中 可以使用命名空间来区分网页中包含的其他基于 XML 的语言 这里 命名空间 svg 用在标签 svg 之前
  • 使用 SWIG 将 C 结构体数组访问到 Python

    我尝试从 Python 调用现有的 C 代码 C代码定义了一个结构体B包含一个结构体数组As C 代码还定义了一个函数 该函数在调用时将值放入结构中 我可以访问数组成员变量 但它不是列表 或支持索引的东西 相反 我得到的是一个代理对象B I
  • jQuery Closest() 不适合我(或者我不为它工作)

    鉴于这个 jQuery div MvcFieldWrapper input focus function this closest label MvcDynamicFieldError fadeOut 并给出这个 HTML div clas
  • R:箱线图 - 如何向下移动 x 轴标签?

    RGR Treatment Geno boxplot fit lt aov Total RGR Treatment Geno data For R summary fit t lt TukeyHSD fit t boxplot Total
  • 用razor显示编码的html

    我将编码的 HTML 存储在数据库中 我可以正确显示它的唯一方法是 div class content MvcHtmlString Create HttpUtility HtmlDecode Model Content div 它很丑 有没
  • 使用Python将海量数据批量插入SQLite

    我读到了这个 使用 Python 将 CSV 文件导入 sqlite3 数据库表 https stackoverflow com questions 2887878 importing a csv file into a sqlite3 d
  • 如何使用 ruby​​ 将图像文件转换为字节数组

    我需要将图像作为字节数组传递到 NET SOAP Web 服务 谁能举例说明如何使用 ruby 将上传的图像文件转换为字节数组 如果我正确理解您的问题 您将获得某种格式的图像 例如 jpeg 或 png 但您需要像素数组才能发送到 SOAP
  • 在带有选项卡的 Winforms 的模型视图演示器中应该使用多少个演示器?

    我有一个带有与业务实体相关的选项卡的表单 例如一个人有传记数据 地址数据等 每个选项卡处理一类个人数据的输入 编辑 并且每个选项卡可以独立保存 应该为所有选项卡使用一名演示者 还是每个选项卡使用一名演示者 还可能有一个主选项卡 它可以导航到
  • 出现 Axios 错误:拨打大量电话时连接 ETIMEDOUT

    从我的 Azure Function 进行大量调用时出现此错误 这个错误是什么意思 如何排除故障 我猜我的 TCP 套接字用完了 我真的不知道如何在功能应用程序菜单中检查它 不过 我检查了 Azure Maps API 的日志 没有错误或掉
  • git 中带有子模块的浅克隆,如何使用指向提交而不是最新提交? [复制]

    这个问题在这里已经有答案了 我知道可以使用浅层子模块 depth选项与git submodule update 但是 如果我跑 git submodule update init recursive depth 1 在我的带有多个子模块的项
  • 如何更改动态 SQL 中的序列?

    我正在尝试创建一个脚本来将数据从一个数据库迁移到另一个数据库 我当前无法做的一件事是将序列的 nextval 设置为另一个数据库中序列的 nextval 我从 user sequences 中得到了值的差异 并生成了以下动态 SQL 语句
  • 如何从 NSArray 中选择 UIImgeView

    I have UIImageView用作可拖动对象 它们位于NSArray所以 当拖动它们时它们工作得很好 但我想要的是当我拖动它们并完成拖动方法而不是将图像放在UIImageView我只想在拖动完成时将其替换为自定义图像 所以我的问题是如
  • 具有相同高度的 SwiftUI HStack 元素

    我希望两个按钮具有相同的高度 类似于Equal HeightUIKit 中的约束 不想指定框架 让 SwiftUI 处理它 但 HStack 中的元素应该具有相同的高度 按钮应具有相同的宽度和高度 并适应较长的文本并增加其框架大小 两个按钮
  • AssemblyInstaller 中的服务类型

    我想通过编程方式安装 Windows 服务example https stackoverflow com questions 1195478 how to make a net windows service start right aft
  • 在广播接收器中检测 USB - 我缺少什么?

    我的代码遗漏了一些东西 需要你的眼睛来定位 我创建了一个 USBOnReciever 广播接收器 public class USBOnReceiver extends BroadcastReceiver Override public vo
  • wc_countries - 国家选择下拉菜单 - woocommerce

    我正在努力设置一个带有默认 WooCommerce 国家和州选择下拉列表的表单 基本上 我想显示国家 地区选择 然后根据国家 地区选择显示州选择 因此 如果用户选择英国 则会显示包含州选择的新下拉列表 我到目前为止