web-dev-qa-db-fra.com

Messages d'avis WooCommerce, comment puis-je les modifier?

J'essaie de comprendre où WooCommerce crée ses messages en cas de succès, d'erreur ou d'avis dans WooCommerce. Je veux éditer ces messages pour mieux adapter le scénario et éditer le HTML. Où se trouvent ces messages et comment puis-je les modifier?

13
Majo0od

Beaucoup d'entre eux sont directement dans les fichiers du plugin - malheureusement. Certains messages sont liés à des points d'ancrage de filtre vous permettant de les éditer sans vous occuper des fichiers de plug-in, mais ce n'est pas toujours le cas. 

Le message que vous vouliez changer était "Le nom du produit a été ajouté à votre panier avec succès". Celui-ci est défini dans la fonction wc_add_to_cart_message dans wc-cart-functions.php et cette fonction vous permet de le modifier à l'aide d'un filtre:

wc_add_notice( apply_filters( 'wc_add_to_cart_message', $message, $product_id ) );

Donc, dans votre fichier functions.php, vous pouvez ajouter quelque chose comme:

add_filter('wc_add_to_cart_message', 'handler_function_name', 10, 2);
function handler_function_name($message, $product_id) {
    return "Thank you for adding product" . $product_id;
}
9
Yavor

Ouvrez les fichiers du plugin et recherchez wc_add_notice:

 

Cette fonction a un filtre:

apply_filters( 'woocommerce_add_' . $notice_type, $message );

Le $notice_type est le deuxième argument passé dans toutes ces occurrences.

Utiliser quelque chose comme ça devrait marcher:

add_filter( 'woocommerce_add_error', function( $message ) {
    if( $message == 'Some message' )
        $message = '';

    return $message;
});
10
brasofilo

Les filtres mentionnés ici fonctionnent très bien pour l'édition du message lui-même, mais si vous souhaitez modifier le balisage HTML contenant le message de notification, vous devez utiliser les modèles de notification sous templates > notices.

Il y a trois fichiers différents ici, chacun pour les différents types d'avis. Dans mon cas, je voulais ajouter une classe à l'avis de coupon appliqué avec succès, alors j'ai copié success.php dans mon fichier de thème. Mon code ressemblait alors à celui ci-dessous:

<?php foreach ( $messages as $message ) : ?>
    <?php 
        $om_css_class = "";
        if ( $message == "Coupon code applied successfully." ) {
            $om_css_class = "coupon-notice-msg";
        } 
    ?>
    <div class="woocommerce-message <?php echo $om_css_class; ?>"><?php echo wp_kses_post( $message ); ?></div>
<?php endforeach; ?>
3
Ollie Murphy

Je suis tombé sur cette réponse et j'ai pu l'implémenter pour un site de production. Cette réponse est liée aux avis de codes d’erreur woocommerce. Vous devez trouver les codes dans les fichiers de classe séparés (~ woocommerce/includes /). Pour ce faire, le code était dans ~ woocommerce/includes/class-wc-coupon.php

/**
 * Modify the coupon errors:
*/

 add_filter( 'woocommerce_coupon_error', 'wpq_coupon_error', 10, 2 );

 function wpq_coupon_error( $err, $err_code ) {
  return ( '103' == $err_code ) ? '' : $err;
 }

Merci à cette page: http://wpquestions.com/WooCommerce_Remove_Coupon_code_already_applied_error_message/10598

2
user3795286

Je l'ai fait pour le fichier error.php. chemin du fichier est woocommerce/templates/notices/error.php

<ul class="woocommerce-error" role="alert">
    <?php
  foreach ( $messages as $message ) :

  if($message=="<strong>Billing Email address</strong> is a required field.") { $message="<strong>Email address</strong> is a required field."; }?>
        <li><?php echo wp_kses_post( $message ); ?></li>
    <?php endforeach; ?>
</ul>
1
developer