P粉5949413012023-08-17 10:10:22
There are a lot of errors in your code:
'cheque'
and 'cheque'
are two different strings. else
does not support any conditional parameters. There are several ways to change the text of the checkout "Place Order" button:
add_filter( 'woocommerce_order_button_text', 'order_button_text_based_on_gateway', 10 ); function order_button_text_based_on_gateway( $button_text ) { if ( is_checkout() && ! is_wc_endpoint_url() ) { $payment_method = WC()->session->get( 'chosen_payment_method' ); // 获取当前支付网关 $cart_total_string = strip_tags( WC()->cart->get_total() ); // 获取订单总额字符串 $pay_order_text = __('Order & Pay', 'woocommerce'); // 下单按钮 if ( $payment_method == 'bacs' ) { $payment_method_text = __('using WireTransfer', 'woocommerce'); } elseif ( $payment_method == 'cheque' ) { $payment_method_text = __('with a personal cheque', 'woocommerce'); } elseif ( $payment_method == 'cod' ) { $payment_method_text = __('on delivery', 'woocommerce'); } elseif ( $payment_method == 'etco' ) { $payment_method_text = __('using EtCo', 'woocommerce'); } elseif ( $payment_method == 'stripe' ) { $payment_method_text = __('using Stripe', 'woocommerce'); } if ( isset($payment_method_text) ) { $button_text = sprintf( '%s %s %s', $pay_order_text, $cart_total_string, $payment_method_text ); } } return $button_text; } // 在支付方式更改时更新结账(jQuery) add_action( 'woocommerce_checkout_init', 'trigger_update_checkout_on_payment_method_change' ); function trigger_update_checkout_on_payment_method_change(){ wc_enqueue_js("$('form.checkout').on( 'change', 'input[name=payment_method]', function(){ $(document.body).trigger('update_checkout'); });"); }
Or you can also use the order_button_text
attribute of WC_Payment_Gateway
, as shown below:
add_filter('woocommerce_available_payment_gateways', 'change_payment_text_button'); function change_payment_text_button( $payment_gateways ) { if ( is_checkout() && ! is_wc_endpoint_url() ) { $cart_total_string = strip_tags( WC()->cart->get_total() ); // 获取订单总额字符串 $pay_order_text = __('Order & Pay', 'woocommerce'); // 下单按钮文本 if ( isset($payment_gateways['bacs']) ) { $payment_gateways['bacs']->order_button_text = sprintf( '%s %s %s', $pay_order_text, $cart_total_string, __('using WireTransfer', 'woocommerce') ); } if ( isset($payment_gateways['cheque']) ) { $payment_gateways['cheque']->order_button_text = sprintf( '%s %s %s', $pay_order_text, $cart_total_string, __('with a personal cheque', 'woocommerce') ); } if ( isset($payment_gateways['cod']) ) { $payment_gateways['cod']->order_button_text = sprintf( '%s %s %s', $pay_order_text, $cart_total_string, __('on delivery', 'woocommerce') ); } if ( isset($payment_gateways['etco']) ) { $payment_gateways['etco']->order_button_text = sprintf( '%s %s %s', $pay_order_text, $cart_total_string, __('using EtCo', 'woocommerce') ); } if ( isset($payment_gateways['stripe']) ) { $payment_gateways['stripe']->order_button_text = sprintf( '%s %s %s', $pay_order_text, $cart_total_string, __('using Stripe', 'woocommerce') ); } } return $payment_gateways; }
Place the code in your child theme’s functions.php file (or in a plugin). It has been tested and works fine.