Aller au contenu

Modèles du thème

Personnaliser le HTML des formulaires ImmoSync, les e-mails de formulaire et le JavaScript des formulaires depuis le thème WordPress, sans modifier le plugin.

Il est possible de remplacer :

  • le balisage des formulaires des shortcodes ([wpis-form-contact], [wpis-form-estate], [wpis-form-evaluation])
  • les corps des e-mails (notification à l’agence et confirmation au visiteur) et la mise en page HTML partagée
  • le JavaScript des formulaires (wpis-forms.js)

Ne remplacer que les fichiers nécessaires. Les fichiers absents du thème retombent sur les valeurs par défaut du plugin.

Le HTML des formulaires, le HTML des e-mails et wpis-forms.js se résolvent tous dans cet ordre :

  1. Thème enfant (get_stylesheet_directory())
  2. Thème parent (get_template_directory()), s’il est différent
  3. Valeur par défaut du plugin

Remplacer le HTML rendu par les shortcodes de formulaire.

Il est possible de remplacer :

  • le formulaire de contact ([wpis-form-contact])
  • le formulaire de contact étendu ([wpis-form-contact type="extended"])
  • le formulaire bien ([wpis-form-estate])
  • le formulaire d’évaluation ([wpis-form-evaluation])

Dans le thème actif (ou le thème enfant), créer :

immosync/form/

Puis n’ajouter que les fichiers à personnaliser :

Fichier du thème Remplace Shortcode
immosync/form/contact.html contact.default.form.html [wpis-form-contact]
immosync/form/contact-extended.html contact.extended.form.html [wpis-form-contact type="extended"]
immosync/form/estate.html estate.default.form.html [wpis-form-estate]
immosync/form/evaluation.html evaluation.default.form.html [wpis-form-evaluation]

Exemple :

your-theme/
immosync/
form/
contact.html
contact-extended.html
estate.html
evaluation.html

Si un fichier est absent du thème, la valeur par défaut du plugin sous plugin/templates/form/ est utilisée. Il est possible de remplacer un seul formulaire et de laisser les autres inchangés.

  1. Copier le fichier plugin correspondant dans le chemin du thème (le renommer comme dans le tableau ci-dessus).
  2. Modifier la copie.
  3. Recharger une page qui utilise le shortcode pour vérifier le balisage.

Sources plugin à copier :

  • plugin/templates/form/contact.default.form.html → immosync/form/contact.html
  • plugin/templates/form/contact.extended.form.html → immosync/form/contact-extended.html
  • plugin/templates/form/estate.default.form.html → immosync/form/estate.html
  • plugin/templates/form/evaluation.default.form.html → immosync/form/evaluation.html

Les libellés et messages traduits utilisent des balises de style Mustache remplacées par le shortcode, par exemple :

  • {{ form.gender.label }}, {{ form.firstname.label }}, {{ form.lastname.label }}
  • {{ form.email.label }}, {{ form.phone.label }}, {{ form.message.label }}
  • {{ form.policy.label }}, {{ form.policy.value }}, {{ form.submit.value }}
  • {{ message.success }}, {{ message.processing }}
  • {{ error.single }}, {{ error.multiple }}

Les champs d’adresse (contact étendu / évaluation) utilisent aussi {{ form.addressStreet.label }}, addressNumber, addressBox, addressZip, addressCity.

Conserver data-lid="%listId%" sur la balise <form>. %listId% est remplacé par l’attribut de shortcode list-id (par défaut -1).

Ces jetons sont remplacés par le shortcode :

  • %estateId% — depuis l’attribut estate-id lorsqu’il est défini, sinon depuis la page de bien courante
  • %postId% — ID de la publication courante

Les conserver dans le remplacement si le formulaire doit toujours cibler le bon bien.

Le plugin injecte un champ CSRF vide (_wpis_token) et un honeypot masqué (website) avant </form> lors du rendu. Le script du formulaire charge un jeton frais depuis POST /wp-json/wpis/form-token après le chargement de la page, afin qu’une page mise en cache ne stocke pas un jeton actif. Les copies du thème peuvent inclure le même balisage ; le plugin retire les doublons et écrit un champ jeton vide.

Conserver les attributs id d’origine sur les champs visibles. Ne pas renommer _wpis_token ni website.

Chaque contrôle (et son minutage) peut être désactivé ou remplacé depuis le fichier wpis-settings.json du thème. Voir Réglages du thème.

  • Les attributs de shortcode s’appliquent toujours (style, submit, type, estate-id, list-id).
  • type="extended" charge contact-extended.html lorsqu’il est présent ; sinon le modèle étendu du plugin.
  • Le JS d’envoi du formulaire et le comportement de l’API ne sont pas modifiés par ces remplacements HTML.
  • Important : la balise formulaire et chaque champ doivent conserver leur attribut id d’origine inchangé afin que le JS du plugin puisse trouver et traiter correctement les champs.
  • Hook de filtre pour un usage avancé : wpis_form_template_path.

Personnaliser les e-mails des formulaires ImmoSync depuis le thème WordPress, sans modifier le plugin.

Il est possible de remplacer :

  • le corps de notification client (message envoyé à l’agence / à l’administrateur)
  • le corps de confirmation destinataire (message envoyé au visiteur)
  • le corps du rapport hebdomadaire des envois bloqués
  • la mise en page HTML partagée qui enveloppe ces corps

Dans le thème actif (ou le thème enfant), créer :

immosync/email/

Puis n’ajouter que les fichiers à personnaliser :

Fichier du thème Remplace
immosync/email/client-content.html content/client-email.html
immosync/email/recipient-content.html content/recipient-email.html
immosync/email/blocked-report-content.html content/blocked-report-email.html
immosync/email/template.html default.email.html

Exemple :

your-theme/
immosync/
email/
client-content.html
recipient-content.html
blocked-report-content.html
template.html

Si un fichier est absent du thème, la valeur par défaut du plugin sous plugin/templates/email/ est utilisée. Il est possible de remplacer un seul fichier et de laisser les autres inchangés.

  1. Copier le fichier plugin correspondant dans le chemin du thème (le renommer comme dans le tableau ci-dessus).
  2. Modifier la copie.
  3. Envoyer un formulaire pour vérifier le rendu de l’e-mail.

Sources plugin à copier :

  • Corps (client) : plugin/templates/email/content/client-email.html → immosync/email/client-content.html
  • Corps (destinataire) : plugin/templates/email/content/recipient-email.html → immosync/email/recipient-content.html
  • Corps (rapport des blocages) : plugin/templates/email/content/blocked-report-email.html → immosync/email/blocked-report-content.html
  • Mise en page : plugin/templates/email/default.email.html → immosync/email/template.html

Valeurs simples (remplacées en texte) :

  • {{ firstname }}, {{ lastname }}, {{ email }}, {{ phone }}, {{ message }}
  • {{ source }}, {{ url }}
  • Adresse : {{ addressStreet }}, {{ addressNumber }}, {{ addressBox }}, {{ addressZip }}, {{ addressCity }}
  • Recherche : {{ searchPurpose }}, {{ searchCategory }}, {{ searchPriceMin }}, {{ searchPriceMax }}, {{ searchRooms }}, {{ searchAreaMin }}, {{ searchAreaMax }}, {{ searchZips }}
  • Bien : {{ estateId }}, {{ estateReference }}, {{ estateName }}
  • Rapport des blocages : {{ siteName }}, {{ total }}, {{ periodStart }}, {{ periodEnd }}, {{ blockedTable }}

Sections conditionnelles (le contenu intérieur n’est conservé que lorsque la condition est vraie) :

{{#address}}
...
{{/address}}
{{#search}}
...
{{/search}}
{{#estate}}
...
{{/estate}}

Le fichier de mise en page doit inclure ces jetons :

  • {{ email.headline }}
  • {{ email.message }} — contenu du corps rendu
  • {{ email.signature }}
  • {{ email.footer }}
  • Les objets et les adresses From / To restent contrôlés par les réglages du plugin, pas par ces modèles.
  • Hook de filtre pour un usage avancé : wpis_email_template_path.

Pour s’accrocher à l’envoi d’un formulaire depuis le thème (analytics, pixels, UI supplémentaire), écouter wpis_form_submission et wpis_form_success plutôt que de copier ce fichier. Voir Événements JavaScript.

Pour personnaliser le comportement ou l’apparence des formulaires en JavaScript, copier le script du plugin à la racine du thème actif (ou du thème enfant) :

your-theme/wpis-forms.js

Source plugin à copier :

  • plugin/dist/client/wpis-forms.js → wpis-forms.js

Le même ordre de résolution s’applique (thème enfant, puis thème parent, puis le fichier du plugin). La copie du thème est versionnée avec filemtime afin que les navigateurs prennent en compte les modifications.

Hook de filtre pour un usage avancé : wpis_forms_script.

Les remplacements de modèles HTML ne modifient pas ce script. Ne remplacer wpis-forms.js que lorsqu’un comportement côté client différent est nécessaire.

  • Réglages du thème — remplacer les options du plugin (y compris les contrôles de sécurité des formulaires) depuis wpis-settings.json
  • Shortcodes — attributs et utilisation des shortcodes de formulaire