{"id":3171,"date":"2026-05-28T05:16:28","date_gmt":"2026-05-28T05:16:28","guid":{"rendered":"https:\/\/vivacucina.fr\/?page_id=3171"},"modified":"2026-06-04T17:01:50","modified_gmt":"2026-06-04T17:01:50","slug":"ajout-de-visite","status":"publish","type":"page","link":"https:\/\/vivacucina.fr\/?page_id=3171","title":{"rendered":"Ajout de visite"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3171\" class=\"elementor elementor-3171\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e0067e4 e-flex e-con-boxed e-con e-parent\" data-id=\"e0067e4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dc5c991 elementor-widget elementor-widget-text-editor\" data-id=\"dc5c991\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-076c69d e-flex e-con-boxed e-con e-parent\" data-id=\"076c69d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-0eb8252 e-con-full e-flex e-con e-child\" data-id=\"0eb8252\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bf62d23 cucLogo elementor-widget elementor-widget-image\" data-id=\"bf62d23\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"300\" height=\"131\" src=\"https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/03\/Viva-Cucina-pantone-e1778429986492-300x131.png\" class=\"attachment-medium size-medium wp-image-2896\" alt=\"\" srcset=\"https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/03\/Viva-Cucina-pantone-e1778429986492-300x131.png 300w, https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/03\/Viva-Cucina-pantone-e1778429986492-1024x448.png 1024w, https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/03\/Viva-Cucina-pantone-e1778429986492-768x336.png 768w, https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/03\/Viva-Cucina-pantone-e1778429986492-1536x671.png 1536w, https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/03\/Viva-Cucina-pantone-e1778429986492-600x262.png 600w, https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/03\/Viva-Cucina-pantone-e1778429986492-64x28.png 64w, https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/03\/Viva-Cucina-pantone-e1778429986492.png 1837w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b97ca87 elementor-widget elementor-widget-text-editor\" data-id=\"b97ca87\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"color: #ffffff;\"><a class=\"x1i10hfl xjbqb8w x1ejq31n x18oe1m7 x1sy0etr xstzfhl x972fbf x10w94by x1qhh985 x14e42zd x9f619 x1ypdohk xt0psk2 x3ct3a4 xdj266r x14z9mp xat24cr x1lziwak xexx8yu xyri2b x18d9i69 x1c1uobl x16tdsg8 x1hl2dhg xggy1nq x1a2a7pz xkrqix3 x1sur9pj x1fey0fg x1pd3egz\" style=\"color: #ffffff;\" tabindex=\"0\" role=\"link\" href=\"https:\/\/www.instagram.com\/cucina_bayonne?fbclid=IwZXh0bgNhZW0CMTAAc3J0YwZhcHBfaWQQMjIyMDM5MTc4ODIwMDg5MgABHvpR215eEtIMzO3e2GPV5rVjRNCMHRVY9fD-7In6oqjND_88omzlcuV0NybS_aem_jE1vE9bY43JfJkwiKPmUMg\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@cucina_bayonne<\/a><\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-351335b elementor-shape-rounded elementor-grid-0 e-grid-align-center elementor-widget elementor-widget-social-icons\" data-id=\"351335b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"social-icons.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-social-icons-wrapper elementor-grid\" role=\"list\">\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-facebook elementor-repeater-item-a9851ae\" href=\"https:\/\/www.facebook.com\/p\/Cucina-Bayonne-100068161743751\/?locale=fr_FR\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Facebook<\/span>\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-facebook\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z\"><\/path><\/svg>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-instagram elementor-repeater-item-7b3037d\" href=\"https:\/\/www.instagram.com\/cucina_bayonne\/?hl=fr\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Instagram<\/span>\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-instagram\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\"><\/path><\/svg>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-59f69e6\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Youtube<\/span>\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-youtube\" viewBox=\"0 0 576 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"><\/path><\/svg>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-tiktok elementor-repeater-item-4722825\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Tiktok<\/span>\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-tiktok\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z\"><\/path><\/svg>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-293e6bc e-con-full e-flex e-con e-child\" data-id=\"293e6bc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c1caaf3 elementor-widget elementor-widget-image\" data-id=\"c1caaf3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"640\" height=\"349\" src=\"https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/06\/ChatGPT-Image-3-juin-2026-20_47_15-e1780514727102-1024x558.png\" class=\"attachment-large size-large wp-image-3391\" alt=\"\" srcset=\"https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/06\/ChatGPT-Image-3-juin-2026-20_47_15-e1780514727102-1024x558.png 1024w, https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/06\/ChatGPT-Image-3-juin-2026-20_47_15-e1780514727102-300x164.png 300w, https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/06\/ChatGPT-Image-3-juin-2026-20_47_15-e1780514727102-768x419.png 768w, https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/06\/ChatGPT-Image-3-juin-2026-20_47_15-e1780514727102-600x327.png 600w, https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/06\/ChatGPT-Image-3-juin-2026-20_47_15-e1780514727102-64x35.png 64w, https:\/\/vivacucina.fr\/wp-content\/uploads\/2026\/06\/ChatGPT-Image-3-juin-2026-20_47_15-e1780514727102.png 1027w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d19685c elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"d19685c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"vc-loyalty-app\">\r\n\r\n  <div class=\"vc-card\">\r\n\r\n<h2 style=\"text-align:center;\">JE VALIDE MA VISITE<\/h2>\r\n\r\n    <div class=\"vc-form\">\r\n\r\n      <!-- <div class=\"vc-row\">\r\n\r\n        <div class=\"vc-field\">\r\n          <label>Pr\u00e9nom (optionnel)<\/label>\r\n          <input type=\"text\" id=\"firstName\">\r\n        <\/div>\r\n\r\n        <div class=\"vc-field\">\r\n          <label>Nom (optionnel)<\/label>\r\n          <input type=\"text\" id=\"lastName\">\r\n        <\/div>\r\n\r\n      <\/div> -->\r\n\r\n      <div class=\"vc-row\">\r\n\r\n        <div class=\"vc-field\">\r\n          <label style=\"text-align:center;\">T\u00e9l\u00e9phone *<\/label>\r\n          <input type=\"text\" id=\"phone\" placeholder=\"Saisissez votre num\u00e9ro pour profiter de vos avantages.\">\r\n        <\/div>\r\n\r\n        <!-- <div class=\"vc-field\">\r\n          <label>Code postal (optionnel)<\/label>\r\n          <input type=\"text\" id=\"postcode\">\r\n        <\/div> -->\r\n\r\n      <\/div>\r\n\r\n      <button id=\"searchClientBtn\">\r\n        Je valide\r\n      <\/button>\r\n\r\n    <\/div>\r\n\r\n    <div id=\"clientResult\"><\/div>\r\n\r\n  <\/div>\r\n  <button id=\"logoutBtn\" class=\"vc-logout-btn\">\r\n  Je cr\u00e9e mon compte\r\n<\/button>\r\n\r\n<\/div>\r\n\r\n<style>\r\n.vc-logout-btn{\r\n  width:100%;\r\n  height:52px;\r\n  border:none;\r\n  border-radius:14px;\r\n  background:#C9A96E;\r\n  color:#1E2A1B;\r\n  font-size:15px;\r\n  font-weight:700;\r\n  cursor:pointer;\r\n  margin-top:12px;\r\n  text-decoration:underline;\r\n}\r\n\r\n.vc-loyalty-app{\r\n  width:100%;\r\n  padding:20px;\r\n  box-sizing:border-box;\r\n  font-family:Arial,sans-serif;\r\n}\r\n\r\n.vc-card{\r\n  max-width:700px;\r\n  margin:auto;\r\n  background:#1E2A1B;\r\n  border-radius:18px;\r\n  padding:24px;\r\n  box-sizing:border-box;\r\n  border: 1px solid #C9A96E;\r\n}\r\n\r\n.vc-card h2{\r\n  margin:0 0 24px;\r\n  font-size:48px;\r\n  color:#ffffff;\r\n}\r\n\r\n.vc-form{\r\n  display:flex;\r\n  flex-direction:column;\r\n  gap:18px;\r\n}\r\n\r\n.vc-row{\r\n  display:flex;\r\n  gap:16px;\r\n}\r\n\r\n.vc-field{\r\n  flex:1;\r\n  display:flex;\r\n  flex-direction:column;\r\n  gap:8px;\r\n}\r\n\r\n.vc-field label{\r\n  font-size:14px;\r\n  font-weight:600;\r\n  color:#ffffff;\r\n}\r\n\r\n.vc-field input{\r\n  height:48px;\r\n  border-radius:12px;\r\n  border:1px solid #d1d5db;\r\n  padding:0 14px;\r\n  font-size:14px;\r\n  outline:none;\r\n  background:white;\r\n}\r\n\r\n#searchClientBtn{\r\n  height:50px;\r\n  border:none;\r\n  border-radius:14px;\r\n  background:#C9A96E;\r\n  color:#1E2A1B;\r\n  font-size:15px;\r\n  font-weight:600;\r\n  cursor:pointer;\r\n  margin-top:6px;\r\n}\r\n\r\n#clientResult{\r\n  margin-top:28px;\r\n}\r\n\r\n.vc-client{\r\n  background:white;\r\n  border-radius:18px;\r\n  border:1px solid #e5e7eb;\r\n  padding:22px;\r\n}\r\n\r\n.vc-client-top{\r\n  display:flex;\r\n  justify-content:space-between;\r\n  align-items:flex-start;\r\n  gap:20px;\r\n}\r\n\r\n.vc-client-info h3{\r\n  margin:0 0 8px;\r\n  font-size:22px;\r\n  color:#111827;\r\n}\r\n\r\n.vc-client-info p{\r\n  margin:4px 0;\r\n  font-size:14px;\r\n  color:#6b7280;\r\n}\r\n\r\n.vc-visits{\r\n  text-align:right;\r\n}\r\n\r\n.vc-visits span{\r\n  display:block;\r\n  font-size:12px;\r\n  color:#6b7280;\r\n  margin-bottom:6px;\r\n}\r\n\r\n.vc-visits strong{\r\n  font-size:40px;\r\n  color:#111827;\r\n}\r\n\r\n.vc-actions{\r\n  margin-top:24px;\r\n}\r\n\r\n.vc-add-visit{\r\n  width:100%;\r\n  height:52px;\r\n  border:none;\r\n  border-radius:14px;\r\n  background:#C9A96E;\r\n  color:#1E2A1B;\r\n  font-size:15px;\r\n  font-weight:700;\r\n  cursor:pointer;\r\n}\r\n\r\n.vc-not-found{\r\n  background:white;\r\n  border-radius:18px;\r\n  border:1px dashed #d1d5db;\r\n  padding:30px;\r\n  text-align:center;\r\n  color:#6b7280;\r\n}\r\n\r\n.vc-error{\r\n  border-color:#ef4444 !important;\r\n}\r\n\r\n@media(max-width:768px){\r\n\r\n  .vc-row{\r\n    flex-direction:column;\r\n  }\r\n\r\n  .vc-client-top{\r\n    flex-direction:column;\r\n  }\r\n\r\n  .vc-visits{\r\n    text-align:left;\r\n  }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n<script>\r\n\r\nconsole.log('VC APP LOADED');\r\n\r\nconst searchBtn = document.getElementById('searchClientBtn');\r\nconst resultContainer = document.getElementById('clientResult');\r\n\r\nconsole.log('BUTTON:', searchBtn);\r\n\r\nif(searchBtn){\r\n\r\n  searchBtn.addEventListener('click', verifyClient);\r\n\r\n}\r\n\r\n\/*\r\n|--------------------------------------------------------------------------\r\n| VERIFY CLIENT\r\n|--------------------------------------------------------------------------\r\n*\/\r\n\r\nasync function verifyClient(){\r\n\r\n  console.log('VERIFY CLIENT CLICKED');\r\n\r\n  clearErrors();\r\n\r\n  const firstNameEl = document.getElementById('firstName');\r\n  const lastNameEl = document.getElementById('lastName');\r\n  const postcodeEl = document.getElementById('postcode');\r\n\r\n  const firstName = firstNameEl ? firstNameEl.value.trim() : '';\r\n  const lastName = lastNameEl ? lastNameEl.value.trim() : '';\r\n  const phone = document.getElementById('phone').value.trim();\r\n  const postcode = postcodeEl ? postcodeEl.value.trim() : '';\r\n\r\n  console.log('FORM VALUES:', {\r\n    firstName,\r\n    lastName,\r\n    phone,\r\n    postcode\r\n  });\r\n\r\n  let hasError = false;\r\n\r\nif(!phone){\r\n  setError('phone');\r\n  hasError = true;\r\n}\r\n\r\n  if(hasError){\r\n\r\n    console.log('VALIDATION FAILED');\r\n\r\n    return;\r\n\r\n  }\r\n\r\n  try {\r\n\r\n    console.log('SENDING AJAX REQUEST');\r\n\r\n    const formData = new FormData();\r\n\r\n    \/\/ IMPORTANT\r\n    formData.append('action', 'vc_find_customer_v2');\r\n\r\n    formData.append('first_name', firstName);\r\n    formData.append('last_name', lastName);\r\n    formData.append('phone', phone);\r\n    formData.append('postcode', postcode);\r\n\r\n    const response = await fetch('\/wp-admin\/admin-ajax.php', {\r\n      method: 'POST',\r\n      body: formData\r\n    });\r\n\r\n    console.log('RAW RESPONSE:', response);\r\n\r\nif(!response.ok){\r\n\r\n  const raw = await response.text();\r\n\r\n  console.error('HTTP ERROR:', response.status);\r\n  console.error('RAW SERVER RESPONSE:', raw);\r\n\r\n  resultContainer.innerHTML = `\r\n    <div class=\"vc-not-found\">\r\n      Erreur serveur (${response.status})\r\n    <\/div>\r\n  `;\r\n\r\n  return;\r\n}\r\n\r\n    const data = await response.json();\r\n\r\n    console.log('AJAX DATA:', data);\r\n\r\n    if(!data.success){\r\n\r\n      console.log('NO CLIENT FOUND');\r\n\r\n      resultContainer.innerHTML = `\r\n      \r\n        <div class=\"vc-not-found\">\r\n          Aucun client correspondant trouv\u00e9.\r\n        <\/div>\r\n\r\n      `;\r\n\r\n      return;\r\n\r\n    }\r\n\r\n    console.log('CLIENT FOUND');\r\n\r\n    renderClient(data.client);\r\n\r\n  } catch(error){\r\n\r\n    console.error('AJAX ERROR:', error);\r\n\r\n    resultContainer.innerHTML = `\r\n    \r\n      <div class=\"vc-not-found\">\r\n        Une erreur est survenue.\r\n      <\/div>\r\n\r\n    `;\r\n\r\n  }\r\n\r\n}\r\n\r\n\/*\r\n|--------------------------------------------------------------------------\r\n| RENDER CLIENT\r\n|--------------------------------------------------------------------------\r\n*\/\r\n\r\nfunction renderClient(client){\r\n\r\n  console.log('RENDER CLIENT:', client);\r\n\r\n  resultContainer.innerHTML = `\r\n\r\n    <div class=\"vc-client\">\r\n\r\n      <div class=\"vc-client-top\">\r\n\r\n        <div class=\"vc-client-info\">\r\n\r\n          <h3>\r\n            ${escapeHtml(client.firstName)} ${escapeHtml(client.lastName)}\r\n          <\/h3>\r\n\r\n          <p>\r\n            ${escapeHtml(client.phone)}\r\n          <\/p>\r\n\r\n          <p>\r\n            ${escapeHtml(client.postcode)}\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n        <div class=\"vc-visits\">\r\n\r\n          <span>Nombre de visites<\/span>\r\n\r\n          <strong id=\"visitCounter\">\r\n            ${client.visits}\r\n          <\/strong>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n      <div class=\"vc-actions\">\r\n\r\n        <button \r\n          class=\"vc-add-visit\"\r\n          id=\"addVisitBtn\"\r\n        >\r\n          + Ajouter une visite\r\n        <\/button>\r\n\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  `;\r\n\r\n  bindVisitButton(client);\r\n\r\n}\r\n\r\n\/*\r\n|--------------------------------------------------------------------------\r\n| ADD VISIT\r\n|--------------------------------------------------------------------------\r\n*\/\r\n\r\nfunction bindVisitButton(client){\r\n\r\n  const btn = document.getElementById('addVisitBtn');\r\n\r\n  if(!btn){\r\n\r\n    console.error('BUTTON NOT FOUND');\r\n\r\n    return;\r\n\r\n  }\r\n\r\n  btn.addEventListener('click', async () => {\r\n\r\n    console.log('ADD VISIT CLICKED');\r\n\r\n    btn.disabled = true;\r\n\r\n    btn.textContent = 'Ajout...';\r\n\r\n    try {\r\n\r\n      const formData = new FormData();\r\n\r\n      \/\/ IMPORTANT\r\n      formData.append('action', 'vc_add_visit_v2');\r\n\r\n      formData.append('user_id', client.id);\r\n\r\n      const response = await fetch('\/wp-admin\/admin-ajax.php', {\r\n        method: 'POST',\r\n        body: formData\r\n      });\r\n\r\n      console.log('VISIT RAW RESPONSE:', response);\r\n\r\nif(!response.ok){\r\n\r\n  const raw = await response.text();\r\n\r\n  console.error('VISIT HTTP ERROR:', response.status);\r\n  console.error('VISIT RAW RESPONSE:', raw);\r\n\r\n  return;\r\n}\r\n      const data = await response.json();\r\n\r\n      console.log('VISIT RESPONSE:', data);\r\n\r\n      if(!data.success){\r\n\r\n        console.error('VISIT FAILED');\r\n\r\n        btn.textContent = 'Erreur';\r\n\r\n        setTimeout(() => {\r\n\r\n          btn.textContent = '+ Ajouter une visite';\r\n          btn.disabled = false;\r\n\r\n        }, 1500);\r\n\r\n        return;\r\n\r\n      }\r\n\r\n      client.visits = data.visits;\r\n\r\n      document.getElementById('visitCounter').textContent = data.visits;\r\n\r\n      btn.textContent = 'Visite ajout\u00e9e';\r\n\r\n      \/*\r\n      |--------------------------------------------------------------------------\r\n      | REDIRECT AFTER SUCCESS\r\n      |--------------------------------------------------------------------------\r\n      *\/\r\n\r\n      setTimeout(() => {\r\n\r\n        \/\/ Milestone: if visits is a multiple of 5, redirect to discount reward page\r\n        if (data.visits > 0 && data.visits % 5 === 0) {\r\n\r\n          window.location.href =\r\n            'https:\/\/vivacucina.fr\/?page_id=3468&user_id=' + client.id + '&visits=' + data.visits;\r\n\r\n        } else {\r\n\r\n          window.location.href =\r\n            'https:\/\/vivacucina.fr\/?page_id=3121&user_id=' + client.id;\r\n\r\n        }\r\n\r\n      }, 1200);\r\n\r\n    } catch(error){\r\n\r\n      console.error('VISIT AJAX ERROR:', error);\r\n\r\n      btn.textContent = 'Erreur';\r\n\r\n      setTimeout(() => {\r\n\r\n        btn.textContent = '+ Ajouter une visite';\r\n        btn.disabled = false;\r\n\r\n      }, 1500);\r\n\r\n    }\r\n\r\n  });\r\n\r\n}\r\n\r\n\/*\r\n|--------------------------------------------------------------------------\r\n| HELPERS\r\n|--------------------------------------------------------------------------\r\n*\/\r\n\r\nfunction setError(id){\r\n\r\n  console.log('FIELD ERROR:', id);\r\n\r\n  const field = document.getElementById(id);\r\n\r\n  if(field){\r\n    field.classList.add('vc-error');\r\n  }\r\n\r\n}\r\n\r\nfunction clearErrors(){\r\n\r\n  document.querySelectorAll('input').forEach(input => {\r\n    input.classList.remove('vc-error');\r\n  });\r\n\r\n}\r\n\r\nfunction escapeHtml(text){\r\n\r\n  if(text === null || text === undefined){\r\n    return '';\r\n  }\r\n\r\n  return String(text)\r\n    .replace(\/&\/g, '&amp;')\r\n    .replace(\/<\/g, '&lt;')\r\n    .replace(\/>\/g, '&gt;')\r\n    .replace(\/\"\/g, '&quot;')\r\n    .replace(\/'\/g, '&#039;');\r\n\r\n}\r\n\r\n\r\n\r\n\r\nconst logoutBtn = document.getElementById('logoutBtn');\r\n\r\nif(logoutBtn){\r\n\r\n  logoutBtn.addEventListener('click', async () => {\r\n\r\n    try {\r\n\r\n      const formData = new FormData();\r\n\r\n      formData.append('action', 'vc_logout_user');\r\n\r\n      const response = await fetch('\/wp-admin\/admin-ajax.php', {\r\n        method: 'POST',\r\n        body: formData\r\n      });\r\n\r\n      const data = await response.json();\r\n\r\n      if(data.success){\r\n\r\n        window.location.href = 'https:\/\/vivacucina.fr\/?page_id=19';\r\n\r\n      }\r\n\r\n    } catch(error){\r\n\r\n      console.error(error);\r\n\r\n    }\r\n\r\n  });\r\n\r\n}\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3edb2f1 elementor-widget elementor-widget-heading\" data-id=\"3edb2f1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Buen appetito !<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3935094 e-con-full e-flex e-con e-child\" data-id=\"3935094\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-349fb06 elementor-widget elementor-widget-text-editor\" data-id=\"349fb06\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\"><span style=\"color: #ffffff;\">Retrouvez nos recettes, astuces et l&rsquo;ensemble de nos produits<br \/><\/span><span style=\"color: #ffffff;\"> sur notre site :<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-72de195 elementor-align-center btn elementor-widget elementor-widget-button\" data-id=\"72de195\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/vivacucina.fr\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-shopping-basket\" viewBox=\"0 0 576 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">vivacucina.fr<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo. @cucina_bayonne Facebook Instagram Youtube Tiktok JE VALIDE MA VISITE T\u00e9l\u00e9phone * Je valide Je cr\u00e9e mon compte Buen appetito ! Retrouvez nos recettes, astuces et l&rsquo;ensemble de nos produits sur notre site : vivacucina.fr<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-3171","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/vivacucina.fr\/index.php?rest_route=\/wp\/v2\/pages\/3171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vivacucina.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vivacucina.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vivacucina.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vivacucina.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3171"}],"version-history":[{"count":205,"href":"https:\/\/vivacucina.fr\/index.php?rest_route=\/wp\/v2\/pages\/3171\/revisions"}],"predecessor-version":[{"id":3508,"href":"https:\/\/vivacucina.fr\/index.php?rest_route=\/wp\/v2\/pages\/3171\/revisions\/3508"}],"wp:attachment":[{"href":"https:\/\/vivacucina.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}