更改WooCommerce結帳頁面上「立即付款」按鈕的文本,以符合支付網關選項
P粉395056196
2023-08-16 14:51:27
<p>我已經試了幾個小時了,但是無論如何都無法讓這個「基本」的東西正常工作。 </p>
<p>我有一堆可用的支付網關,我需要將其名稱(包括訂單總金額)包含在「立即付款」按鈕文字中。 </p>
<p><strong>範例</strong>:「<code>使用Stripe付款訂單$49</code>」</p>
<p>我有一段程式碼,據說可以在更改網關時自動更新結帳。請問,有人可以幫忙嗎? </p>
<pre class="brush:php;toolbar:false;">add_filter( 'woocommerce_order_button_text', 'order_button_text_based_on_gateway', 10, 1 );
function order_button_text_based_on_gateway( $cart ) {
// 確保我們取得了支付網關
$payment_method = WC()->session->get( 'chosen_payment_method' );
// 基於不同的網關,顯示不同的按鈕文字(下單按鈕)
if ( $payment_method == ' bacs ' ) {
return sprintf( '%s %s', __('下單並支付', 'woocommerce'),
strip_tags( WC()->cart->get_total() ) . ' 使用WireTransfer' );
}
elseif ( $payment_method == ' cheque ' ) {
return sprintf( '%s %s', __('下單並支付', 'woocommerce'),
strip_tags( WC()->cart->get_total() ) . ' 使用個人支票' );
}
elseif ( $payment_method == ' cod ' ) {
return sprintf( '%s %s', __('下單並支付', 'woocommerce'),
strip_tags( WC()->cart->get_total() ) . ' 貨到付款' );
}
elseif ( $payment_method == ' etco ' ) {
return sprintf( '%s %s', __('下單並支付', 'woocommerce'),
strip_tags( WC()->cart->get_total() ) . ' 使用EtCo' );
}
else ( $payment_method == ' stripe ' ) {
return sprintf( '%s %s', __('下單並支付', 'woocommerce'),
strip_tags( WC()->cart->get_total() ) . ' 使用Stripe' );
}
}</pre>
<p><strong>「自動更新」結帳腳本:</strong></p>
<pre class="brush:php;toolbar:false;">add_action( 'wp_footer', 'reload_checkout_based_on_gateway_change', 999 );
function reload_checkout_based_on_gateway_change() {
if ( is_checkout() && ! is_admin() ) {
// 結束PHP,開始SCRIPT
?>
<script>
( function( $ ) {
$( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
$( 'body' ).trigger( 'update_checkout' );
}
);
}
)
( jQuery );
</script>
<?php
}
}</pre>
<p><br /></p>
你的程式碼中有很多錯誤:
'cheque'
和'cheque'
是兩個不同的字串。所以在所有的if語句中,沒有一個支付方式符合。
else
不支援任何條件參數。有多種方法可以更改結帳「下單」按鈕的文字:
或也可以使用
WC_Payment_Gateway
的order_button_text
屬性,如下所示:將程式碼放在你的子主題的functions.php檔案中(或外掛中)。經過測試,可以正常工作。