我如何在woocommerce结帐页面中显示optgroup的值

时间:2019-05-30 01:22:17

标签: hook-woocommerce optgroup

此代码有效,但我想在结帐页面(woocommerce_order_details_after_order_table)上显示optgroup选择的值。

这是我在这里找到的代码:

   <?php

    add_action('woocommerce_before_order_notes', 
    'custom_checkout_select_field_with_optgroup', 10, 1 );
    function custom_checkout_select_field_with_optgroup( $checkout ) {
        $domain  = 'woocommerce';
        $title   = __("Region", $domain);
        $slug    = sanitize_title($title);
        $default = __("Select your region", $domain);
        $value   = $checkout->get_value($slug);

        // Region option data array with optgroup
        $options = array(
            __("North Region", $domain) => array(
                'region1' => __("Region 1", $domain),
                'region2' => __("Region 2", $domain),
            ),
            __("South Region", $domain) => array(
                'region3' => __("Region 3", $domain),
                'region4' => __("Region 4", $domain),
            )
        );

        // The field
        echo '<p class="form-row form-row-wide '.$slug.'-dropdown" 
        id="'.$slug.'_field" data-priority="">
        <label for="'.$slug.'" class="">'.$title.'</label>
        <span class="woocommerce-input-wrapper">
        <select name="'.$slug.'" id="'.$slug.'" class="select " data- 
        placeholder="" autocomplete="'.$slug.'">
        <option value="">'.$default.'</option>';

        // Loop through "optgroup"
        foreach( $options as $optgroup_label => $optgroup_options ) {
            echo '<optgroup label="'.$optgroup_label.'">';
            // Loop through "options" in the "optgroup"
            foreach( $optgroup_options as $key => $label ) {
                $selected = $value === $key ? ' selected="selected"': '';
                echo '<option 
                value="'.$key.'"'.$selected.'>'.$label.'</option>';
            }
            echo '</optgroup>';
        }

        echo '</select></span></p>';
    }

  ?>

0 个答案:

没有答案