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!