Il n’y a rien de mieux que d’avoir des informations sur une commande que vous avez passée concernant son statut ou toute autre donnée que vous pouvez trouver utile concernant votre commande. Par défaut, WooCommerce stocke chaque action liée à une commande dans la base de données. Cette série d’actions est disponible dans l’administration, dans la barre latérale lorsque vous éditez une commande. Mais vos clients n’ont pas accès à cette liste d’actions. La bonne nouvelle est que vous pouvez facilement l’ajouter à n’importe quel e-mail envoyé par WooCommerce. Dans ce post, je vais vous montrer ajouter pour ajouter les notes de commande l’e-mail complet (c’est l’e-mail envoyé lorsque l’état de la commande est marqué comme terminé). Mais vous pouvez également utiliser cette méthode pour ajouter les notes de commande à d’autres e-mails.

Modèles personnalisés ou crochets?

Juste un petit rappel: tous les e-mails dans WooCommerce sont fournis à l’aide de modèles, et vous pouvez remplacer les modèles par défaut en créant vos propres modèles. Fondamentalement, un modèle personnalisé vous permet de remplacer les fichiers par défaut de WooCommerce et d’utiliser vos propres fichiers personnalisés à la place. Voici un petit tutoriel qui vous expliquera comment créer vos modèles personnalisés: http://docs.woothemes.com/document/template-structure/.

Vous pouvez ajouter les notes de commande dans un modèle personnalisé, mais je voudrais vous montrer une autre façon de le faire, en utilisant un crochet. L’idée est de ne pas utiliser de modèles personnalisés, mais d’utiliser le fichier functions.php dans votre dossier de thème uniquement.

Les notes de commande sont des commentaires WordPress

Les notes de commande sont des commentaires WordPress ayant un type spécifique «order_note», vous pouvez donc utiliser la classe WordPress WP_Query appliquée aux commentaires à l’aide de la fonction get_comments ().

Le hook que nous devons utiliser est une action appelée «woocommerce_email_order_meta». L’idée est d’appeler une fonction personnalisée lorsque cette action est chargée dans le processus WooCommerce.

L’utilisation de get_comments () simplifie un peu la façon dont nous pouvons récupérer les notes de commande, nous devons simplement nous assurer que nous voulons lister les commentaires liés à une commande spécifique en utilisant l’ID de publication et l’attribut de commentaire «approuver» ce qui signifie que le commentaire est validé (par WooCommerce dans ce cas).

Le code

Voici le code à placer dans le fichier functions.php de votre dossier de thème:

add_action( 'woocommerce_email_order_meta', 'woo_add_order_notes_to_email' );

function woo_add_order_notes_to_email() {

    global $woocommerce, $post;

    $args = array(
        'post_id'   => $post->ID,
        'approve'   => 'approve',
        'type'      => 'order_note'
    );

    $notes = get_comments( $args );
    
    echo '<h2>' . __( 'Order Notes', 'woocommerce' ) . '</h2>';

    echo '<ul class="order_notes">';

    if ( $notes ) {
        foreach( $notes as $note ) {
            $note_classes = get_comment_meta( $note->comment_ID, 'is_customer_note', true ) ? array( 'customer-note', 'note' ) : array( 'note' );

            ?>
            <li rel="comment_ID ) ; ?>" class="">
                <div class="note_content">
                    comment_content ) ) ); ?>
                </div>
                <p class="meta">
                    comment_date_gmt ), current_time( 'timestamp', 1 ) ) ); ?>
                </p>
            </li>
            <?php
        }
    } else {
        echo '<li>' . __( 'There are no notes for this order yet.', 'woocommerce' ) . '</li>';
    }

    echo '</ul>';
}

Comme vous pouvez le voir, ce code est assez simple, rien de vraiment complexe, vous pouvez donc le personnaliser facilement. Veuillez noter l’utilisation de quelques fonctions intéressantes comme human_time_diff (), wptexturize () ou wp_kses_post ().

Eh bien, j’espère que vous avez apprécié cet article, veuillez laisser un commentaire dans le formulaire ci-dessous, j’aimerais avoir vos commentaires à ce sujet!

Share: