woocommerce结账时对城市下拉菜单的限制

使用以下代码到 Woocommerce 上的城市结帐字段:


function change_city_to_dropdown( $fields ) {

    include('citynames.php');

    

    $city_args = wp_parse_args( 'citydelivery' , array(

        'type' => 'select',

        'options' => array_combine( $cities, $cities),

        'input_class' => array(

            'wc-enhanced-select',

        )

    ), $fields['shipping']['shipping_city'] );

    $fields['shipping']['shipping_city'] = $city_args;

    $fields['billing']['billing_city'] = $city_args;

    wc_enqueue_js( "

        jQuery( ':input.wc-enhanced-select' ).filter( ':not(.enhanced)' ).each( function() {

            var select2_args = { minimumResultsForSearch: 5 };

            jQuery( this ).select2( select2_args ).addClass( 'enhanced' );

        });"

    );

    return $fields;

}

add_filter( 'woocommerce_checkout_fields', 'change_city_to_dropdown' );


这可以完美地完成工作,但我无法对其进行限制。例如,默认值为“选择您的城市”,但有时客户没有选择他们的城市并下订单。我尝试了以下代码,但没有奏效:


 add_action('woocommerce_checkout_process', 'checkout_field_city_restriction()');

 function checkout_field_city_restriction() {

    global $woocommerce;

    // Check if set, if its not set add an error.

    if ($_POST[$city_args] == "Select your city")

     wc_add_notice( '<strong>Please select your city</strong>', 'error' );

 }


谁能告诉我我做错了什么?此外,此文件 ('citynames.php') 具有以下代码:


<?php


$cities = array(


'Select your city',

'Tall',

'Tando Jam',

'Topi',

'Pasni',

'Mastung',

'Kalat',

'Kamalia',

'Haroonabad',

'Ranipur',

    );

?>


森林海
浏览 131回答 1
1回答

小怪兽爱吃肉

我已经解决了我的问题。这是必须做的以下事情:&nbsp;add_action('woocommerce_checkout_process', 'checkout_field_city_restriction()');&nbsp;function checkout_field_city_restriction {&nbsp;global $woocommerce;&nbsp;// Check if set, if its not set add an error.&nbsp;if ($_POST[$billing_city] == "Select your city")&nbsp;wc_add_notice( '<strong>Please select your city</strong>', 'error' );&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP