Ad

Move Shipping Options From Order Review Table Before Payment Options On Checkout In WooCommerce

I want to move the shipping options from the order review table before the payment options in the checkout.

I saw, that the order review table has its own template file review-order.php. There I found the following code:

<?php if ( WC()->cart->needs_shipping() && WC()->cart->show_shipping() ) : ?>

    <?php do_action( 'woocommerce_review_order_before_shipping' ); ?>

    <?php wc_cart_totals_shipping_html(); ?>

    <?php do_action( 'woocommerce_review_order_after_shipping' ); ?>

<?php endif; ?>

I know that I could reorder the content from woocommerce_review_order_before_shipping and woocommerce_review_order_after_shipping with an hook. But the code starts with an if clause.

So I'm not sure if or how I could move that section to another place in the checkout.

Is there a way I don't see?

Ad

Answer

You can cut the entire code block and then paste it into another template file within the checkout folder

So cut from the checkout/review-order.php template file line L67-L75

<?php if ( WC()->cart->needs_shipping() && WC()->cart->show_shipping() ) : ?>

    <?php do_action( 'woocommerce_review_order_before_shipping' ); ?>

    <?php wc_cart_totals_shipping_html(); ?>

    <?php do_action( 'woocommerce_review_order_after_shipping' ); ?>

<?php endif; ?>

To line 51 in the checkout/form-checkout.php template file

    ...
    <?php do_action( 'woocommerce_checkout_after_customer_details' ); ?>

<?php endif; ?>

<!-- PASTE HERE -->

<?php do_action( 'woocommerce_checkout_before_order_review_heading' ); ?>

<h3 id="order_review_heading"><?php esc_html_e( 'Your order', 'woocommerce' ); ?></h3>
...
Ad
source: stackoverflow.com
Ad