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
2023-08-16 14:51:27
<p>J'essaie depuis des heures maintenant et de toute façon, je n'arrive pas à faire fonctionner cette chose "de base". </p>
<p>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 ». </p>
<p><strong>Exemple</strong> : "<code>Utilisez Stripe pour payer la commande de 49 $</code>"</p>
<p>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 ? </p>
<pre class="brush:php;toolbar:false;">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' );
}
}</pré>
<p><strong>Script de paiement de mise à jour automatique : </strong></p>
<pre class="brush:php;toolbar:false;">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
?>
<script>
( fonction( $ ) {
$( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
$( 'body' ).trigger( 'update_checkout' );
}
);
}
)
(jQuery);
</script>
<?php
}
}</pré>
<p><br /></p>
Il y a beaucoup d'erreurs dans votre code :
'cheque'
和'cheque'
il s'agit de deux chaînes différentes.Donc, parmi toutes les instructions if, aucun des modes de paiement ne correspond.
else
ne prend en charge aucun paramètre de condition.Il existe plusieurs façons de modifier le texte du bouton « Passer la commande » :
Ou vous pouvez également utiliser l'attribut
WC_Payment_Gateway
的order_button_text
, comme indiqué ci-dessous :Placez le code dans le fichier function.php de votre thème enfant (ou dans un plugin). Il a été testé et fonctionne bien.