5

I'm trying to customize the WC checkout page. In my checkout page I've set 2 shipping methods. My goal is to add a custom field down below the first shipping method. To achieve this I used the hook I mentioned below.

woocommerce_after_shipping_rate

But my problem with this is, it just adds the same field for each shipping methods available. How can I manage to add an input field for a particular shipping method?

LoicTheAztec
  • 229,944
  • 23
  • 356
  • 399
Akberov
  • 154
  • 3
  • 12

1 Answers1

8

Using the $method argument that is an instance of the WC_Shipping_Rate Object you can target any shipping method Id using get_id() method, like in this example:

add_action( 'woocommerce_after_shipping_rate', 'checkout_shipping_additional_field', 20, 2 );
function checkout_shipping_additional_field( $method, $index )
{
    if( $method->get_id() == 'flat_rate:12' ){
        echo '<br>
        <input type="checkbox" name="shipping_custom_1" id="shipping_custom_1" value="1" class="shipping_method shipping_custom_1">
        <label for="shipping_custom_1">Custom label</label>';
    }
}

Code goes in function.php file of your active child theme (or active theme). Tested and works.

enter image description here

enter image description here


Similar answers:

LoicTheAztec
  • 229,944
  • 23
  • 356
  • 399