Ändern Sie den Text der Schaltfläche „Jetzt bezahlen' auf der WooCommerce-Checkout-Seite so, dass er mit der Zahlungsgateway-Option übereinstimmt
P粉395056196
2023-08-16 14:51:27
<p>Ich versuche es jetzt schon seit Stunden und schaffe es trotzdem nicht, dieses „einfache“ Ding zum Laufen zu bringen. </p>
<p>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. </p>
<p><strong>Beispiel</strong>: „<code>Verwenden Sie Stripe, um die Bestellung im Wert von 49 $ zu bezahlen</code>“</p>
<p>Ich habe einen Code, der den Checkout beim Wechsel des Gateways automatisch aktualisieren soll.Kann mir bitte jemand helfen? </p>
<pre class="brush:php;toolbar:false;">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() ) .
}
}</pre>
<p><strong>Automatisches Update-Checkout-Skript: </strong></p>
<pre class="brush:php;toolbar:false;">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
?>
<script>
( Funktion( $ ) {
$( 'form.checkout' ).on( 'change', 'input[name^="zahlungsmethode"]', function() {
$( 'body' ).trigger( 'update_checkout' );
}
);
}
)
(jQuery);
</script>
<?php
}
}</pre>
<p><br /></p>
你的代码中有很多错误:
'cheque'
和'cheque'
是两个不同的字符串。所以在所有的if语句中,没有一个支付方式匹配。
else
不支持任何条件参数。有多种方法可以更改结账“下单”按钮的文本:
或者也可以使用
WC_Payment_Gateway
的order_button_text
属性,如下所示:将代码放在你的子主题的functions.php文件中(或插件中)。经过测试,可以正常工作。