MCMLXIX

Menu
  • Accueil
  • Culture
  • Histoire
  • Pratique
  • Santé Bien-être
  • Société
  • Tech
Home
Tech
Woocommerce colissimo : Manipuler woocommerce_after_shipping_rate pour afficher explicitement la livraison offerte avec le plugin Colissimo
Tech

Woocommerce colissimo : Manipuler woocommerce_after_shipping_rate pour afficher explicitement la livraison offerte avec le plugin Colissimo

17 février 2021

Le plugin officiel de La Poste, Colissimo shipping methods for WooCommerce, permet de gérer aisément les Colissimos d’une boutique woocommerce (étiquettes aller / retour et numéro de suivi).

il présente pourtant le défaut de ne pas afficher la mention « livraison gratuite » lorsque l’on a configuré les frais d’expédition en conséquence. C’est embêtant surtout avec une gratuité déclinée selon le contenu du panier et le choix d’expédition (envoi direct ou en point relais).

Pour la livraison payante, cela ne présente aucun problème puisque l’affichage du prix est clairement décrit :

woocommerce colissimo

En revanche, quand le seuil de gratuité est passé, cela n’est pas affiché :

woocommerce colissimo

Cela ne convient évidemment pas. Il faudrait pouvoir afficher ce type d’information à l’écran :

cart colissimo afficher gratuit

Comment afficher la mention « Livraison gratuite » quand c’est gratuit pour un mode de livraison avec mon plugin Colissimo shipping methods for WooCommerce

Le bloc d’affichage des modes de livraisons proposés dans le panier de woocommerce est géré dans le fichier themes/flatsome/woocommerce/cart/cart-shipping.php

<ul id="shipping_method" class="shipping__list woocommerce-shipping-methods">
   <?php foreach ( $available_methods as $method ) : ?>
	<li class="shipping__list_item">
	<?php
	if ( 1 < count( $available_methods ) ) {
 	   printf( '<input type="radio" name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" %4$s />', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ), checked( $method->id, $chosen_method, false ) ); // WPCS: XSS ok.
	} else {
	   printf( '<input type="hidden" name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" />', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ) ); // WPCS: XSS ok.
	}
	printf( '<label class="shipping__list_label" for="shipping_method_%1$s_%2$s">%3$s</label>', $index, esc_attr( sanitize_title( $method->id ) ), wc_cart_totals_shipping_method_label( $method ) ); // WPCS: XSS ok.
	do_action( 'woocommerce_after_shipping_rate', $method, $index );
   ?>
	</li>
   <?php endforeach; ?>
</ul>

Et ce qui nous intéresse est le woocommerce_after_shipping_rate du do_action( 'woocommerce_after_shipping_rate', $method, $index ); qu’on va aller trifouiller dans le fichier functions.php du thème enfant.

En regardant le code, on observe que le mode d’envoi et le tarif (le truc qui affiche, par exemple, soit Colissimo, soit Colissimo : 6,00 €) sont gérés par la méthode wc_cart_totals_shipping_method_label( $method ).

Ce qui discrimine l’affichage du prix ou de la gratuité est la présence des 2 points (‘ : ‘). Donc, nous allons afficher la mention « Livraison gratuite » quand ces deux points sont absents.

Pour faire cela, ajoutez en fin de votre fichier functions.php ces lignes, sachant que lcp_nosign et lpc_relay correspondent aux valeurs des cases à cocher des types de livraison dans le plugin de la poste.

add_action( 'woocommerce_after_shipping_rate', 'livraison_offerte', 20, 2 );
function livraison_offerte( $method, $index )
{
    if( $method->get_id() == 'lpc_nosign' ){
		if (stristr(wc_cart_totals_shipping_method_label( $method ),':') === FALSE){
			echo "Livraison offerte";}
    }
	else if( $method->get_id() == 'lpc_relay' ){
		if (stristr(wc_cart_totals_shipping_method_label( $method ),':') === FALSE){
			echo "Livraison offerte";}
    }
}

Transférez vers votre serveur. Et ça marche.

N’hésitez pas à faire part de vos remarques et ou améliorations.

Partager
Tweet
Email
Article précédent
Article suivant

Articles en relation

CSS : glyphicon bootstrap de couleur transparente
Les icônes fournies par défaut avec le framework Bootstrap peuvent …

CSS : glyphicon bootstrap de couleur transparente

Créer une APK à partir d’une application Android installée
J’avoue, j’ai pas testé. Il serait intéressant de savoir si …

Créer une APK à partir d’une application Android installée

3 commentaires

  1. happyfrog34

    alors là, bravo et merci… c’est top ça marche nickel

    23 mars 2021
  2. Stephanie

    je rencontre exactement la même problématique. Je voudrais que quand les frais d’expédition sont gratuits, la mention « gratuit » apparaisse. Comme sur votre exemple, si le coût est supérieur à zéro, la somme en apparente, par exemple » :8.00€ »
    je ne m’y connais pas en php et je n’arrive donc pas à m’en sortir.
    voici mon code source :
    /**
    * Filter formatted price.
    *
    * @param float $formatted_price Formatted price.
    * @param float $price Unformatted price.
    * @param int $decimals Number of decimals.
    * @param string $decimal_separator Decimal separator.
    * @param string $thousand_separator Thousand separator.
    * @param float|string $original_price Original price as float, or empty string. Since 5.0.0.
    */
    $price = apply_filters( ‘formatted_woocommerce_price’, number_format( $price, $args[‘decimals’], $args[‘decimal_separator’], $args[‘thousand_separator’] ), $price, $args[‘decimals’], $args[‘decimal_separator’], $args[‘thousand_separator’], $original_price );

    if ( apply_filters( ‘woocommerce_price_trim_zeros’, false ) && $args[‘decimals’] > 0 ) {
    $price = wc_trim_zeros( $price );

    }

    $formatted_price = ( $negative ? ‘-‘ :  » ) . sprintf( $args[‘price_format’],  » . get_woocommerce_currency_symbol( $args[‘currency’] ) .  », $price );
    $return =  » . $formatted_price .  »;

    if ( $args[‘ex_tax_label’] && wc_tax_enabled() ) {
    $return .= ‘ ‘ . WC()->countries->ex_tax_or_vat() .  »;
    }

    Vous croyez que vous pouvez m’aider ?
    merci

    25 mai 2021
    • CTV

      Si vous avez une modification à faire, ce n’est pas dans le code de woocommerce mais dans votre fichier functions.php
      C’est attaché à un plugin votre modification ?

      26 mai 2021

Déposez un commentaire Annuler la réponse

Catégories

  • Culture
  • Histoire
  • Pratique
  • Santé Bien-être
  • Société
  • Tech

Archives

  • mars 2023
  • février 2023
  • décembre 2022
  • août 2022
  • octobre 2021
  • juillet 2021
  • juin 2021
  • mai 2021
  • avril 2021
  • mars 2021
  • février 2021
  • janvier 2021
  • décembre 2020
  • novembre 2020
  • octobre 2020
  • septembre 2020
  • août 2020
  • juillet 2020
  • mai 2020
  • avril 2020
  • mars 2020
  • février 2020
  • janvier 2020
  • novembre 2019
  • octobre 2019
  • septembre 2019
  • août 2019
  • juillet 2019
  • juin 2019
  • mai 2019
  • avril 2019
  • mars 2019
  • janvier 2019
  • décembre 2018
  • octobre 2018
  • septembre 2018
  • décembre 2017

MCMLXIX

Copyright © 2023 MCMLXIX
Theme by MyThemeShop.com

Bloqueur de publicité détecté

Votre blogueur de publicité est activé. Vous pouvez soutenir ce site en le débloquant

Refresh