Aller au contenu

Réglages du thème

Placer un fichier JSON optionnel dans le thème actif (thème enfant lorsqu’il y en a un) pour remplacer les options du plugin sans passer par l’onglet Configuration de l’administration.

{active-theme}/wpis-settings.json

Le plugin le lit avec get_stylesheet_directory(), donc un fichier du thème parent n’est pas utilisé lorsqu’un thème enfant est actif.

Seules les clés définies sont appliquées. Omettre tout le reste pour conserver les valeurs de la base de données ou les valeurs par défaut du code.

Les commentaires de ligne // et les commentaires de bloc /* */ sont retirés avant l’analyse, ce qui permet de désactiver une clé en la commentant sans invalider le reste du fichier.

  1. Clé présente dans wpis-settings.json → cette valeur (y compris false, 0, ou "")
  2. Sinon la valeur stockée dans la table wpis_settings (onglet Configuration de l’administration)
  3. Sinon la valeur par défaut du code indiquée ci-dessous

L’onglet Configuration charge les valeurs stockées dans la table wpis_settings, puis superpose les clés présentes dans wpis-settings.json. L’exécution utilise SettingsManager::get(), qui privilégie le fichier JSON.

Les clés de sécurité des formulaires peuvent être définies depuis l’onglet Formulaires de l’administration. Les slugs de réécriture peuvent être définis depuis l’onglet Slugs de l’administration. Les clés SEO des biens peuvent être définies depuis l’onglet SEO de l’administration. Si la même clé est présente dans wpis-settings.json, le champ d’administration affiche cette valeur, est désactivé, et indique qu’elle est lue depuis le fichier. L’enregistrement n’écrase pas une clé verrouillée par le JSON.

Les slugs de réécriture non enregistrés retombent sur la locale du site via les fichiers PO (_x(..., 'rewrite slug', 'wpis')). L’anglais conserve les valeurs techniques par défaut (wpis_estates, city, …). Les locales françaises utilisent biens, ville, equipements, et le néerlandais (nl_BE, nl_NL) utilise panden, stad, voorzieningen. Les valeurs stockées qui correspondent encore à ces msgids anglais sont traitées comme non définies afin que la valeur par défaut traduite puisse s’appliquer. Enregistrer un slug égal à la valeur par défaut de la locale courante ne le persiste pas.

Utiliser les types JSON natifs :

  • Booléens : true / false (les chaînes "0" / "1" fonctionnent aussi)
  • Entiers : 900, 60, 2
  • Chaînes : "wpis_estates", "agency@example.com"

Une chaîne vide "" remplace tout de même la valeur par défaut. Cela compte pour les slugs de réécriture : "" est appliqué tel quel.

{
"formSecurityFastSubmission": false
}
{
"debug": false,
"formSecurityEnabled": true,
"formSecurityCsrf": true,
"formSecurityHoneypot": true,
"formSecurityFastSubmission": true,
"formSecurityRateIp": true,
"formSecuritySimilarFields": true,
"formSecurityCsrfTtl": 900,
"formSecurityFastSubmissionSeconds": 2,
"formSecurityRateTtl": 60,
"formSecurityWeeklyReport": true,
"formSecurityWeeklyReportEmail": "agency@example.com",
"formEnableContactSaving": true,
"formEnableRecipientEmail": true,
"formEnableClientEmail": true,
"formEmailDefaultReceiver": "agency@example.com",
"formEmailDefaultSender": "noreply@example.com",
"formEmailDefaultSenderName": "Agency name",
"enableImportSystem": true,
"enableImportCustomPostType": false,
"customPostType": "",
"enableProjectManagement": false,
"enableProjectManagementCustomPostType": false,
"projectCustomPostType": "",
"enableAgentManagement": false,
"enableAgentManagementCustomPostType": false,
"agentCustomPostType": "",
"enableTaxonomies": false,
"postTypeEstateSlug": "wpis_estates",
"postTypeProjectSlug": "wpis_projects",
"postTypeAgentSlug": "wpis_agents",
"taxonomyEstateCitySlug": "city",
"taxonomyEstateCategorySlug": "category",
"taxonomyEstatePurposeSlug": "type",
"taxonomyEstateAmenetySlug": "amenities",
"enableSyncAutomation": false,
"enableCronImport": false,
"enableCronUpdate": false,
"enableCronRemove": false,
"autoRemoveUpdatedEstates": false,
"enablePartialRemove": false,
"enableEstateSeo": true,
"enableEstateJsonLd": true,
"enableEstateOpenGraph": true,
"noindexSoldEstates": true,
"noindexSoftDeletedEstates": true,
"enableVueShortcodes": false
}

Clé Type Par défaut Description
debug bool false Journalisation de synchronisation supplémentaire et indicateurs de debug renvoyés par les réponses de l’API d’administration.

Les formulaires publics ([wpis-form-contact], [wpis-form-estate], [wpis-form-evaluation]) exécutent ces contrôles avant qu’un contact soit enregistré ou que des e-mails soient envoyés. Tous les contrôles sont actifs par défaut. Ils peuvent aussi être modifiés depuis l’onglet Formulaires de l’administration ; les clés présentes dans wpis-settings.json y restent verrouillées.

Ordre des contrôles : CSRF → honeypot → envoi rapide → rate / IP → champs similaires.

L’envoi rapide utilise l’horodatage du jeton CSRF. Désactiver formSecurityCsrf ignore aussi l’envoi rapide.

Clé Type Par défaut Description
formSecurityEnabled bool true Interrupteur principal. false ignore tous les contrôles et n’injecte ni le jeton ni le honeypot.
formSecurityCsrf bool true Exige un _wpis_token valide. Les jetons invalides ou expirés renvoient une erreur.
formSecurityHoneypot bool true Champ website masqué. S’il est rempli, le plugin renvoie un faux succès et n’enregistre pas le contact.
formSecurityFastSubmission bool true Rejette les envois effectués moins de N secondes après l’émission du jeton. Nécessite CSRF.
formSecurityRateIp bool true Un envoi consommateur par IP client et par fenêtre.
formSecuritySimilarFields bool true Rejette lorsque le prénom et le nom sont identiques (après trim et normalisation de casse).
formSecurityCsrfTtl int (secondes) 900 Durée de vie du jeton CSRF. Les valeurs non positives retombent sur 900.
formSecurityFastSubmissionSeconds int (secondes) 2 Seuil d’envoi rapide. Les valeurs non positives retombent sur 2.
formSecurityRateTtl int (secondes) 60 Fenêtre de limitation par IP. Les valeurs non positives retombent sur 60.
formSecurityWeeklyReport bool true Envoie un e-mail hebdomadaire chaque lundi à 08:00 (fuseau horaire WordPress) avec les envois bloqués des 7 derniers jours. Aucun e-mail n’est envoyé s’il n’y a aucune ligne.
formSecurityWeeklyReportEmail string E-mail de l’administrateur du site Boîte de réception du rapport hebdomadaire des envois bloqués.

Les booléens false, 0, et "0" désactivent un contrôle. Les clés absentes conservent la valeur par défaut (activé).


Clé Type Par défaut Description
formEnableContactSaving bool true Enregistre les envois dans la table des contacts WordPress.
formEnableClientEmail bool true Envoie un e-mail de notification à l’agence lors de l’envoi d’un formulaire.
formEnableRecipientEmail bool true Envoie un e-mail de confirmation au visiteur.
formEmailDefaultReceiver string E-mail de l’administrateur du site Boîte de réception des notifications destinées à l’agence.
formEmailDefaultSender string E-mail de l’administrateur du site Adresse d’expéditeur de la confirmation au visiteur.
formEmailDefaultSenderName string Nom du site Nom d’expéditeur de la confirmation au visiteur.

Clé Type Par défaut Description
enableImportSystem bool false Crée des publications WordPress à partir des biens ImmoSync.
enableImportCustomPostType bool false Importe les biens dans un type de publication existant au lieu de wpis_estates.
customPostType string — Type de publication cible lorsque enableImportCustomPostType est activé.
enableProjectManagement bool false Importe et gère les projets.
enableProjectManagementCustomPostType bool false Importe les projets dans un type de publication existant au lieu de wpis_projects.
projectCustomPostType string — Type de publication cible lorsque enableProjectManagementCustomPostType est activé.
enableAgentManagement bool false Importe et gère les agents.
enableAgentManagementCustomPostType bool false Importe les agents dans un type de publication existant au lieu de wpis_agents.
agentCustomPostType string — Type de publication cible lorsque enableAgentManagementCustomPostType est activé.
enableTaxonomies bool — Enregistre les taxonomies ville, catégorie, destination et équipements sur les biens.

Utilisés comme rewrite.slug du type de publication ou de la taxonomie correspondante. L’enregistrement depuis l’onglet Slugs de l’administration régénère les permaliens à la requête suivante. Si un slug n’est modifié que dans wpis-settings.json, vider le cache des permaliens (Réglages → Permaliens → Enregistrer).

Les valeurs par défaut non enregistrées suivent la locale du site (voir priorité). Le msgid anglais est indiqué ci-dessous.

Clé Type Par défaut (en) Description
postTypeEstateSlug string wpis_estates Slug de permalien du type de publication bien.
postTypeProjectSlug string wpis_projects Slug de permalien du type de publication projet.
postTypeAgentSlug string wpis_agents Slug de permalien du type de publication agent.
taxonomyEstateCitySlug string city Slug de la taxonomie ville.
taxonomyEstateCategorySlug string category Slug de la taxonomie catégorie.
taxonomyEstatePurposeSlug string type Slug de la taxonomie type de transaction.
taxonomyEstateAmenetySlug string amenities Slug de la taxonomie équipements. L’orthographe de la clé Amenety est requise.

Clé Type Par défaut Description
enableSyncAutomation bool — Autorise la synchronisation pilotée par cron. L’activer depuis l’administration génère aussi cronKey s’il est absent. L’authentification REST entrante n’exige plus cette clé ; le jeton d’activation est utilisé en premier.
enableCronImport bool — Phase cron : créer les nouveaux biens.
enableCronUpdate bool — Phase cron : mettre à jour les biens existants.
enableCronRemove bool — Phase cron : retirer les biens absents du flux distant.
autoRemoveUpdatedEstates bool — Supprimer et réimporter les biens dont les images ont changé.
enablePartialRemove bool — Suppression logique au lieu de retirer la publication : conserve le bien et l’image principale, définit wpis_soft_deleted.

Émis sur les pages singulières des biens importés. Les cinq clés peuvent aussi être modifiées depuis l’onglet Configuration SEO de l’administration ; les clés présentes dans wpis-settings.json y restent verrouillées.

JSON-LD exige enableEstateSeo et enableEstateJsonLd. Open Graph exige enableEstateSeo et enableEstateOpenGraph. Noindex exige enableEstateSeo plus l’indicateur noindex correspondant. Voir SEO des biens.

Clé Type Par défaut Description
enableEstateSeo bool true Interrupteur principal. false ignore JSON-LD, Open Graph et les remplacements robots.
enableEstateJsonLd bool true Produit le JSON-LD schema.org RealEstateListing / Offer / Place. Ignoré lorsque le SEO est désactivé.
enableEstateOpenGraph bool true Produit les balises Open Graph image, prix et statut. Ignoré lorsque le SEO est désactivé.
noindexSoldEstates bool true noindex, follow sur les biens avec wpis_status_id = 3. Ignoré lorsque le SEO est désactivé.
noindexSoftDeletedEstates bool true noindex, follow sur les biens avec wpis_soft_deleted. Ignoré lorsque le SEO est désactivé.

Clé Type Par défaut Description
enableVueShortcodes bool false Charge les assets publics du shortcode de liste (Vue). Laisser désactivé si ces shortcodes ne sont pas utilisés.

Clé Type Par défaut Description
cronKey string Généré lorsque l’automatisation est activée Secret historique pour les URL cron. Le REST entrant (/sync, /logs, /blocked-submissions) privilégie le jeton d’activation stocké dans wpis_connexion. Ne pas committer cette valeur dans un dépôt public.
estatePageId mixed — Accepté par le point d’entrée d’enregistrement des réglages d’administration. Non utilisé à l’exécution.