Modifiez le texte du bouton « Payer maintenant » sur la page de paiement WooCommerce pour qu'il corresponde à l'option de passerelle de paiement
P粉395056196
P粉395056196 2023-08-16 14:51:27
0
1
597

J'essaie depuis des heures maintenant et de toute façon, je n'arrive pas à faire fonctionner cette chose "de base".

J'ai plusieurs passerelles de paiement disponibles et je dois inclure leurs noms (y compris le montant total de la commande) dans le texte du bouton « Payer maintenant ».

Exemple : "Utilisez Stripe pour payer la commande de 49 $"

J'ai un morceau de code censé mettre automatiquement à jour la caisse lors du changement de passerelle.S'il vous plaît, quelqu'un peut-il m'aider ?

add_filter( 'woocommerce_order_button_text', 'order_button_text_based_on_gateway', 10, 1 ); fonction order_button_text_based_on_gateway( $cart ) { // Assurez-vous que nous obtenons la passerelle de paiement $payment_method = WC()->session->get( 'chosen_payment_method' ); // Basé sur différentes passerelles, afficher un texte de bouton différent (bouton de commande) if ( $payment_method == 'bacs' ) { return sprintf( '%s %s', __('Passer la commande et payer', 'woocommerce'), strip_tags( WC()->cart->get_total() ) 'Utiliser WireTransfer' ); } elseif ( $payment_method == 'chèque' ) { return sprintf( '%s %s', __('Passer la commande et payer', 'woocommerce'), strip_tags( WC()->cart->get_total() ) 'Utiliser un chèque personnel' ); } elseif ( $payment_method == 'cod') { return sprintf( '%s %s', __('Passer la commande et payer', 'woocommerce'), strip_tags( WC()->cart->get_total() ) 'Paiement à la livraison' ); } elseif ( $payment_method == 'etco') { return sprintf( '%s %s', __('Passer la commande et payer', 'woocommerce'), strip_tags( WC()->cart->get_total() ) 'Utiliser EtCo' ); } else ( $payment_method == 'bande' ) { return sprintf( '%s %s', __('Passer la commande et payer', 'woocommerce'), strip_tags( WC()->cart->get_total() ) 'Utiliser Stripe' ); } } 

Script de paiement de mise à jour automatique :

add_action( 'wp_footer', 'reload_checkout_based_on_gateway_change', 999 ); fonction reload_checkout_based_on_gateway_change() { if ( is_checkout() && ! is_admin() ) { // Fin de PHP et démarrage de SCRIPT ?>   


P粉395056196
P粉395056196

répondre à tous (1)
P粉594941301

Il y a beaucoup d'erreurs dans votre code :

  • L'erreur principale concerne les chaînes :'cheque''cheque'il s'agit de deux chaînes différentes.
    Donc, parmi toutes les instructions if, aucun des modes de paiement ne correspond.
  • Une autre erreur est queelsene prend en charge aucun paramètre de condition.

Il existe plusieurs façons de modifier le texte du bouton « Passer la commande » :

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

Ou vous pouvez également utiliser l'attributWC_Payment_Gatewayorder_button_text, comme indiqué ci-dessous :

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

Placez le code dans le fichier function.php de votre thème enfant (ou dans un plugin). Il a été testé et fonctionne bien.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!