首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wc_countries -状态选择下拉- woocommerce

wc_countries -状态选择下拉- woocommerce
EN

Stack Overflow用户
提问于 2016-01-13 02:29:20
回答 1查看 8.3K关注 0票数 2

我正在努力建立一个表单,一个默认的WooCommerce国家和州选择下拉。

基本上,我想显示国家选择,然后国家选择的基础上的国家选择。因此,如果用户选择UK,将显示带有州选择的新下拉列表。

我就这么说了:

代码语言:javascript
复制
<?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>';
  ?>

国家下拉显示国家和州下拉显示商店基地-英国的状态。

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

找不到任何信息,谁有做这件事的经验?

EN

回答 1

Stack Overflow用户

发布于 2016-01-13 04:14:38

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

代码语言:javascript
复制
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>';

注意他们的类型..。它们不是select类型。

现在问你的问题..。

你需要有国家和州的本地化脚本..。我不会继续讨论如何使用wp_localize_script()。如果需要的话,请阅读链接。这是它的一部分。

代码语言:javascript
复制
$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-js脚本(一个脚本文件)中,您可以像这样读取状态:

代码语言:javascript
复制
    var states_json = my_js.countries.replace( /&quot;/g, '"' ),
        states = $.parseJSON( states_json );

然后,您必须在您的国家中添加一个更改事件,并根据选择的国家重新填充状态.

示例:如果选定的国家是菲律宾,则为states["PH"]

代码语言:javascript
复制
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构建这样的选项。

代码语言:javascript
复制
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>';
    }
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34757408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档