Ändern Sie den Text der Schaltfläche „Jetzt bezahlen' auf der WooCommerce-Checkout-Seite so, dass er mit der Zahlungsgateway-Option übereinstimmt
P粉395056196
P粉395056196 2023-08-16 14:51:27
0
1
560

Ich versuche es jetzt schon seit Stunden und schaffe es trotzdem nicht, dieses „einfache“ Ding zum Laufen zu bringen.

Ich habe eine Reihe von Zahlungsgateways zur Verfügung und muss deren Namen (einschließlich des Gesamtbetrags der Bestellung) in den Text der Schaltfläche „Jetzt bezahlen“ einfügen.

Beispiel: „Verwenden Sie Stripe, um die Bestellung im Wert von 49 $ zu bezahlen

Ich habe einen Code, der den Checkout beim Wechsel des Gateways automatisch aktualisieren soll.Kann mir bitte jemand helfen?

add_filter( 'woocommerce_order_button_text', 'order_button_text_based_on_gateway', 10, 1 ); Funktion order_button_text_based_on_gateway( $cart ) { // Stellen Sie sicher, dass wir das Zahlungsgateway erhalten $ payment_method = WC()->session->get( 'chosen_ payment_method' ); // Basierend auf verschiedenen Gateways unterschiedliche Schaltflächentexte anzeigen (Bestellschaltfläche) if ( $ payment_method == ' bacs ' ) { return sprintf( '%s %s', __('Bestellung aufgeben und bezahlen', 'woocommerce'), strip_tags( WC()->cart->get_total() ) . } elseif ( $ payment_method == ' check ' ) { return sprintf( '%s %s', __('Bestellung aufgeben und bezahlen', 'woocommerce'), strip_tags( WC()->cart->get_total() ) ) . } elseif ( $ payment_method == ' cod ' ) { return sprintf( '%s %s', __('Bestellung aufgeben und bezahlen', 'woocommerce'), strip_tags( WC()->cart->get_total() ) . } elseif ( $ payment_method == ' etco ' ) { return sprintf( '%s %s', __('Bestellung aufgeben und bezahlen', 'woocommerce'), strip_tags( WC()->cart->get_total() ) . } else ( $ payment_method == ' Stripe ' ) { return sprintf( '%s %s', __('Bestellung aufgeben und bezahlen', 'woocommerce'), strip_tags( WC()->cart->get_total() ) . } }

Automatisches Update-Checkout-Skript:

add_action( 'wp_footer', 'reload_checkout_based_on_gateway_change', 999 ); Funktion reload_checkout_based_on_gateway_change() { if ( is_checkout() && ! is_admin() ) { //PHP beenden und SCRIPT starten ?>   


P粉395056196
P粉395056196

Antworte allen (1)
P粉594941301

你的代码中有很多错误:

  • 主要错误是关于字符串:'cheque''cheque'是两个不同的字符串。
    所以在所有的if语句中,没有一个支付方式匹配。
  • 另一个错误是else不支持任何条件参数。

有多种方法可以更改结账“下单”按钮的文本:

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'); });"); }

或者也可以使用WC_Payment_Gatewayorder_button_text属性,如下所示:

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; }

将代码放在你的子主题的functions.php文件中(或插件中)。经过测试,可以正常工作。

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!