-
-
Save myalban/f6e0764ad78c12c88641d493d5fe564f to your computer and use it in GitHub Desktop.
How to Move Payments on WooCommerce Checkout | https://www.ibenic.com/move-payments-woocommerce-checkout
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Adding the payment fragment to the WC order review AJAX response | |
*/ | |
add_filter( 'woocommerce_update_order_review_fragments', 'my_custom_payment_fragment' ); | |
/** | |
* Adding our payment gateways to the fragment #checkout_payments so that this HTML is replaced with the updated one. | |
*/ | |
function my_custom_payment_fragment( $fragments ) { | |
ob_start(); | |
my_custom_display_payments(); | |
$html = ob_get_clean(); | |
$fragments['#checkout_payments'] = $html; | |
return $fragments; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Moving the payments | |
*/ | |
add_action( 'woocommerce_checkout_shipping', 'my_custom_display_payments', 20 ); | |
/** | |
* Displaying the Payment Gateways | |
*/ | |
function my_custom_display_payments() { | |
if ( WC()->cart->needs_payment() ) { | |
$available_gateways = WC()->payment_gateways()->get_available_payment_gateways(); | |
WC()->payment_gateways()->set_current_gateway( $available_gateways ); | |
} else { | |
$available_gateways = array(); | |
} | |
?> | |
<div id="checkout_payments"> | |
<h3><?php esc_html_e( 'Billing', 'woocommerce' ); ?></h3> | |
<?php if ( WC()->cart->needs_payment() ) : ?> | |
<ul class="wc_payment_methods payment_methods methods"> | |
<?php | |
if ( ! empty( $available_gateways ) ) { | |
foreach ( $available_gateways as $gateway ) { | |
wc_get_template( 'checkout/payment-method.php', array( 'gateway' => $gateway ) ); | |
} | |
} else { | |
echo '<li class="woocommerce-notice woocommerce-notice--info woocommerce-info">' . apply_filters( 'woocommerce_no_available_payment_methods_message', WC()->customer->get_billing_country() ? esc_html__( 'Sorry, it seems that there are no available payment methods for your state. Please contact us if you require assistance or wish to make alternate arrangements.', 'woocommerce' ) : esc_html__( 'Please fill in your details above to see available payment methods.', 'woocommerce' ) ) . '</li>'; // @codingStandardsIgnoreLine | |
} | |
?> | |
</ul> | |
<?php endif; ?> | |
</div> | |
<?php | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Checkout Payment Section | |
* | |
* This template can be overridden by copying it to yourtheme/woocommerce/checkout/payment.php. | |
* | |
* HOWEVER, on occasion WooCommerce will need to update template files and you | |
* (the theme developer) will need to copy the new files to your theme to | |
* maintain compatibility. We try to do this as little as possible, but it does | |
* happen. When this occurs the version of the template file will be bumped and | |
* the readme will list any important changes. | |
* | |
* @see https://docs.woocommerce.com/document/template-structure/ | |
* @package WooCommerce/Templates | |
* @version 3.5.3 | |
*/ | |
defined( 'ABSPATH' ) || exit; | |
if ( ! is_ajax() ) { | |
do_action( 'woocommerce_review_order_before_payment' ); | |
} | |
?> | |
<div id="payment" class="woocommerce-checkout-payment"> | |
<div class="form-row place-order"> | |
<noscript> | |
<?php | |
/* translators: $1 and $2 opening and closing emphasis tags respectively */ | |
printf( esc_html__( 'Since your browser does not support JavaScript, or it is disabled, please ensure you click the %1$sUpdate Totals%2$s button before placing your order. You may be charged more than the amount stated above if you fail to do so.', 'woocommerce' ), '<em>', '</em>' ); | |
?> | |
<br/><button type="submit" class="button alt" name="woocommerce_checkout_update_totals" value="<?php esc_attr_e( 'Update totals', 'woocommerce' ); ?>"><?php esc_html_e( 'Update totals', 'woocommerce' ); ?></button> | |
</noscript> | |
<?php wc_get_template( 'checkout/terms.php' ); ?> | |
<?php do_action( 'woocommerce_review_order_before_submit' ); ?> | |
<?php echo apply_filters( 'woocommerce_order_button_html', '<button type="submit" class="button alt" name="woocommerce_checkout_place_order" id="place_order" value="' . esc_attr( $order_button_text ) . '" data-value="' . esc_attr( $order_button_text ) . '">' . esc_html( $order_button_text ) . '</button>' ); // @codingStandardsIgnoreLine ?> | |
<?php do_action( 'woocommerce_review_order_after_submit' ); ?> | |
<?php wp_nonce_field( 'woocommerce-process_checkout', 'woocommerce-process-checkout-nonce' ); ?> | |
</div> | |
</div> | |
<?php | |
if ( ! is_ajax() ) { | |
do_action( 'woocommerce_review_order_after_payment' ); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Fitlering the template for Payment | |
*/ | |
add_filter( 'wc_get_template', 'my_custom_payment_template', 20, 2 ); | |
function my_custom_payment_template( $template, $template_name ) { | |
if ( 'checkout/payment.php' !== $template_name ) { | |
return $template; | |
} | |
return plugin_dir_path( MY_PLUGIN_FILE ) . 'templates/' . $template_name; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment