Shipping methods in dropdown instead of radio buttons

Question

I have a long list of shipping methods which makes the page look very ugly due to the shipping methods showing up in the radio button. Is there a way to change it from radio buttons to dropdown options?

I have tried changing

<ul id="shipping_method" class="woocommerce-shipping-methods">
    <?php foreach ( $available_methods as $method ) : ?>
        <li>
            <?php
            if ( 1 < count( $available_methods ) ) {
                printf( '<input type="radio" name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" %4$s />', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ), checked( $method->id, $chosen_method, false ) ); // WPCS: XSS ok.
            } else {
                printf( '<input type="hidden" name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" />', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ) ); // WPCS: XSS ok.
            }
            printf( '<label for="shipping_method_%1$s_%2$s">%3$s</label>', $index, esc_attr( sanitize_title( $method->id ) ), wc_cart_totals_shipping_method_label( $method ) ); // WPCS: XSS ok.
            do_action( 'woocommerce_after_shipping_rate', $method, $index );
            ?>
        </li>
    <?php endforeach; ?>
</ul>

to

<select id="shipping_method" class="woocommerce-shipping-methods">
    <?php foreach ( $available_methods as $method ) : ?>
        <?php
        if ( 1 < count( $available_methods ) ) {
            printf( '<option name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" %4$s />%6$s</option>', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ), checked( $method->id, $chosen_method, false ), esc_attr( sanitize_title( $method->id ) ), wc_cart_totals_shipping_method_label( $method ) ); // WPCS: XSS ok.
        } else {
            printf( '<input type="hidden" name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" />', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ) ); // WPCS: XSS ok.
        }
        // printf( '<label for="shipping_method_%1$s_%2$s">%3$s</label>', $index, esc_attr( sanitize_title( $method->id ) ), wc_cart_totals_shipping_method_label( $method ) ); // WPCS: XSS ok.
        do_action( 'woocommerce_after_shipping_rate', $method, $index );
        ?>
    <?php endforeach; ?>
</select>

in the woocommerce/cart/cart-shipping.php file but that does not seem to work.

0
Kevin S 3 years 2020-03-27T08:51:29-05:00 0 Answers 110 views 0

Leave an answer

Browse
Browse