Récupérer réservation dans mail de confirmation de commande
-
Bonjour, enfin Re-bonjour,
Je vous pose une autre question et surement la dernière pour ma part ??
Comme vous le savez, j’affiche mon formulaire de réservation après ma page commande dans mon process d’achat. Je récupère mes informations de commande sur cette page réservation dans l’url et une redirection est mise en place vers mon module de paiement à la validation de mon créneau horaire.
Je me redirige donc vers la banque.
Suite à mon paiement, ma commande passe en statut terminée dans woocommerce et un mail est envoyé au client automatiquement pour l’informer du bon déroulement de son achat. Comment afficher dans ce mail, les informations relatives à la réservation ?
Merci
-
Rebonjour,
Avez-vous réussi à mettre en place le thème enfant ?
Si vous parlez de l’e-mail de WooCommerce, en usage standard (lorsque le formulaire de réservation est lié au produit), les informations de la réservation sont affichés directement sur les articles de la commande. Dans votre cas, j’imagine que la réservation n’est pas du tout liée à la commande, vous ne pourrez donc pas afficher les info de la réservation sur cet e-mail.
En revanche, Booking Activities vous permet d’envoyer un email au client lorsqu’une réservation est effectuée.
Allez dans Booking Activities > Réglages > Notifications et activez la notification “L’état de la réservation devient ? Réservé ?” ou bien “L’état de la réservation devient ? En attente ?” en fonction de l’état par défaut de votre réservation (ceci peut être paramétré dans Booking Activities > Réglages > Général > option “Statut de réservation par défaut”).
Activez également l’option “Envoyer lorsqu’une commande est complète”.
Dans le corps du message vous pourrez ajouter des tags pour afficher les informations désirées (par exemple {booking_quantity} affiche la quantité). La liste des tags disponible est affichée à gauche de l’éditeur.
Cordialement,
Yoan CutillasOui je pense que tout est ok du c?té du thème enfant, encore merci pour votre accompagnement.
En ce qui concerne e-mail de woocommerce c’est autre chose :/
Effectivement, le formulaire de réservation n’est pas lié à un produit. Le principe est classique. J’achète un ensemble de produit et je réserve un créneau pour venir les retirer.J’ai compris le fonctionnement des notifications. En réalité, j’aurai voulu simplifier les choses en envoyant qu’un mail à mon client et au préparateur de la commande. Ainsi chacun n’aurai un document unique où serait stipulé informations générale, produits achetés et date/lieu d’enlèvement.
Ah je comprends, merci pour les précisions.
Vous ne pouvez pas faire cela sans code personnalisé. J’ai peut-être une idée sur la manière de procéder pour aider votre développeur :
1. Renseignez le champs “order_id” de la réservation au moment où la réservation est faite (PHP hook: ‘bookacti_booking_form_validated’) (si toutefois il est possible d’identifier la commande en cours à ce moment)
2. Ajouter sur le modèle de l’email de confirmation de WooCommerce un encart pour les informations de la réservation que vous pourrez alors retrouver facilement grace au champ order_id. (https://docs.woocommerce.com/document/template-structure/)Cordialement,
Yoan CutillasPardonnez-moi mais je n’ai pas compris le raisonnement. Au niveau de la réservation, oui effectivement, je peux récupérer le numéro de ma commande. Quelle est l’idée ?
Renseigner un champs order_id dans votre module avec le numéro de la commande ? C’est bien ?a ?
Bonjour,
Oui, il faudrait remplir (via une requête SQL) la colonne “order_id” de la réservation (dans la table wp_bookacti_bookings ou wp_bookacti_booking_groups pour les groupes d’évènements dans votre base de données). Fa?tes le sur le hook ‘bookacti_booking_form_validated’.
Grace à cela, sur le modèle de l’email de confirmation, vous pourrez ensuite écrire une requête SQL permettant de récupérer la réservation possédant l’id de la commande associée à l’email. Ainsi vous pourrez afficher ses informations dans le code HTML de l’email.
Cordialement,
Yoan CutillasOk je comprends le principe ….
1. Je récupère mon code commande présente dans mon URL
2. Je créer une requête me permettant d’insérer mon numéro de commande dans le colonne order_id de la table wp_bookacti_bookings
3. Je lance la requête à la validation du formulaire grace au hook bookacti_booking_form_validated// Recupération du numéro de commande $idpay = $_GET['order-pay']; $sqlidpay="UPDATE wp_abbayebookacti_bookings SET order_id='$idpay'";
En revanche, je n’y connais rien en hook. Je vais tenter de chercher sur le web mais si vous avez des précisions, je suis preneur ??
Bonjour,
Un hook est un point d’entrée dans le code. Il vous permet soit de modifier une partie du code (filter), soit de rajouter du code (action).
Dans le code, il sont facilement identifiables:
Filter:apply_filters( 'nom_du_hook_filter', $valeur_de_retour, $parametre1, $parametre2 );
Action:do_action( 'nom_du_hook_action', $parametre1, $parametre2 );
Si vous souhaitez vous brancher sur un hook de type “filter” il faut écrire:
function ma_fonction_qui_se_branche_sur_le_filter( $valeur_de_retour, $parametre1, $parametre2 ) { // Mettez votre code ici, notamment, modifier la valeur de $valeur_de_retour return $valeur_de_retour; // pour un "filter", il faut toujours retourner la valeur attendue } add_filter( 'nom_du_hook_filter', 'ma_fonction_qui_se_branche_sur_le_filter', 10, 3 );
- 10 correspond à l’ordre d’exécution, plus le nombre est élevé, plus votre fonction s’exécutera tard par rapport aux autres éventuelles fonctions branchées sur ce hook.
- 3 correspond au nombre de paramètres passés à la fonction (comptez le nombre de paramètres dans le apply_filters).
Si vous souhaitez vous brancher sur un hook de type “action” il faut écrire:
function ma_fonction_qui_se_branche_sur_le_action( $parametre1, $parametre2 ) { // Mettez votre code ici // pour un "action", il n'y a rien à retourner } add_action( 'nom_du_hook_action', 'ma_fonction_qui_se_branche_sur_le_action', 10, 2 );
Donc pour vous brancher sur le hook ‘bookacti_booking_form_validated’, il faut écrire:
function code_a_executer_apres_une_reservation_faite_avec_un_formulaire( $booking_id, $booking_form_values, $booking_type, $form_id ) { // Mettez votre code ici } add_action( 'bookacti_booking_form_validated', 'code_a_executer_apres_une_reservation_faite_avec_un_formulaire', 12, 4 );
Il faut toujours ajouter votre code PHP dans le fichier functions.php de votre thème enfant.
Bonjour et merci pour ces précisions.
Donc mon code serait le suivant ?
$idpay = $_GET['order-pay']; $sqlidpay="UPDATE wp_abbayebookacti_bookings SET order_id='$idpay'"; function commid() { $sqlidpay; } add_action( 'bookacti_booking_form_validated', 'commid',10,4);
Bonjour,
Pas de soucis ??
En revanche je sollicite votre compréhension sur le fait que vous ne pourrez vraiment pas faire ce que vous souhaitez sans connaitre le PHP, le HTML et le SQL. Je veux vous aider mais je ne peux pas rédiger votre code personnalisé, vous avez besoin d’un développeur pour vos besoins spécifiques.
Voici par exemple le code à utiliser pour enregistrer le numéro de commande associé à la réservation :
function my_theme_save_order_id_after_booking( $booking_id, $booking_form_values, $booking_type, $form_id ) { global $wpdb; $order_id = intval( $_GET[ 'order-pay' ] ); if( ! $order_id ) { return; } $query = ''; $variables = array( $order_id, $booking_id ); if( $booking_type === 'single' ) { $query = 'UPDATE ' . BOOKACTI_TABLE_BOOKINGS . ' SET order_id = %d WHERE id = %d '; $query = $wpdb->prepare( $query, $variables ); $wpdb->query( $query ); } else if( $booking_type === 'group' ) { $query_group = 'UPDATE ' . BOOKACTI_TABLE_BOOKING_GROUPS . ' SET order_id = %d WHERE id = %d '; $query_group = $wpdb->prepare( $query_group, $variables ); $wpdb->query( $query_group ); $query = 'UPDATE ' . BOOKACTI_TABLE_BOOKINGS . ' SET order_id = %d WHERE group_id = %d '; $query = $wpdb->prepare( $query, $variables ); $wpdb->query( $query ); } } add_action( 'bookacti_booking_form_validated', 'my_theme_save_order_id_after_booking', 10, 4 );
Cordialement,
Yoan CutillasJe comprends très bien; pas de pb. Vous m’avez déjà bcp aidé.Mais nous n’avons pas tous un développeur sous la main 24/24 alors je fais avec les moyens du bord ??
Avec les échanges que nous avons eu, j’ai néanmoins réussi à récupérer les infos de réservation dans mon mail de confirmation de commande. Je parviens également à écrire dans la bonne table lors de la validation du formulaire mais pas avec les données de order-pay. Impossible de récupérer order-pay.
Il semblerait que
$order_id = intval( $_GET[ 'order-pay' ] );
ne fonctionne pas.Bonjour,
Avant tout, $_GET[ ‘order-pay’ ] signifie que dans l’URL vous avez &order-pay=21 (si le numéro de la commande est 21), sinon il faudra trouver un autre moyen de récupérer le numéro de commande.
Mais même avec cela, je crois comprendre pourquoi ?a ne fonctionne pas ; la validation du formulaire est une requête POST faites en AJAX. Donc vos variables GET sont sans doute inaccessibles à ce moment là.
Essayez de rajouter un champ caché dans le formulaire avec le numéro de commande:
function my_theme_add_order_id_form_field( $form, $instance_id, $context ) { if( ! empty( $_GET[ 'order-pay' ] ) ) { echo '<input type="hidden" name="order-pay" value="' . $_GET[ 'order-pay' ] . '" />'; } } add_action( 'bookacti_form_before', 'my_theme_add_order_id_form_field', 10, 3 );
Et remplacez $_GET[ ‘order-pay’ ] par $_POST[ ‘order-pay’ ] dans le code que je vous ai fourni (my_theme_save_order_id_after_booking).
Cordialement,
Yoan Cutillas
- The topic ‘Récupérer réservation dans mail de confirmation de commande’ is closed to new replies.