Filtres & Hooks : exemples pratiques
WP-ImmoMakler fournit de nombreux filter hooks et action hooks WordPress qui vous permettent de personnaliser les sorties et le comportement de l’importateur depuis votre propre code. Tous les exemples de code appartiennent au fichier /wp-content/plugins/immomakler-child/functions.php de votre WP-ImmoMakler Child-Skin-Plugin.
Redirection après une demande de contact réussie
Section intitulée « Redirection après une demande de contact réussie »Rediriger vers une page de confirmation personnalisée après l’envoi du formulaire de contact :
add_filter('immomakler_contactform_mailsent', 'immomakler_mailsent', 10, 3);function immomakler_mailsent($text, $requested_items, $values) { $objektid = $requested_items[0]; return $text . '<script>location.href="/anfrage-gesendet/?id=' . get_post_meta($objektid, 'objektnr_extern', true) . '";</script>';}Déclencher des événements analytics lors de l’envoi du formulaire
Section intitulée « Déclencher des événements analytics lors de l’envoi du formulaire »Pour le cas standard, WP-ImmoMakler → Réglages → Formulaire de contact propose l’option Événement Analytics lors de l’envoi du formulaire — aucun code personnalisé n’est donc nécessaire, voir Configurer le formulaire de contact. Les exemples suivants sont utiles si vous avez besoin de paramètres d’événement supplémentaires et personnalisés.
Google Analytics (gtag.js)
Section intitulée « Google Analytics (gtag.js) »add_filter('immomakler_contactform_mailsent', 'immomakler_contactform_mailsent_analytics_event', 10, 2);function immomakler_contactform_mailsent_analytics_event($response, $requested_items) { return $response . '<script>if (typeof gtag === "function") { gtag("event", "direktanfrage_versendet", { objekt_id: "' . esc_js(get_post_meta($requested_items[0], 'objektnr_extern', true)) . '" }); }</script>';}Google Tag Manager
Section intitulée « Google Tag Manager »add_filter('immomakler_contactform_mailsent', 'immomakler_contactform_mailsent_gtm_event', 10, 2);function immomakler_contactform_mailsent_gtm_event($response, $requested_items) { return $response . '<script>window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "form_submit_wp_immomakler", objekt_id: "' . esc_js(get_post_meta($requested_items[0], 'objektnr_extern', true)) . '" });</script>';}Rendre les champs personnalisés interrogeables
Section intitulée « Rendre les champs personnalisés interrogeables »Pour que les champs meta personnalisés soient pris en compte dans les requêtes de recherche WP_Query :
add_filter('immomakler_searchable_postmeta_keys', 'custom_immomakler_searchable_postmeta_keys');function custom_immomakler_searchable_postmeta_keys($immomakler_metakeys) { $immomakler_metakeys[] = 'verwaltung_objekt-user_defined_simplefield-objekt_des_tages'; return $immomakler_metakeys;}Définir des champs de recherche avancés
Section intitulée « Définir des champs de recherche avancés »Configurer des champs de recherche basés sur des sliders pour la surface, le nombre de pièces et le prix :
add_filter('immomakler_search_enabled_ranges', 'my_immomakler_search_ranges');function my_immomakler_search_ranges($ranges) { return array( 'immomakler_search_size' => array( 'label' => 'Fläche', 'slug' => 'qm', 'unit' => 'm²', 'decimals' => 0, 'meta_key' => 'flaeche', 'slider_step' => 5, ), 'immomakler_search_rooms' => array( 'label' => 'Anzahl Zimmer', 'slug' => 'zimmer', 'unit' => '', 'decimals' => 1, 'meta_key' => 'anzahl_zimmer', 'slider_step' => 0.5, ), 'immomakler_search_price_rent' => array( 'label' => 'Kaltmiete', 'slug' => 'kaltmiete', 'unit' => '€', 'decimals' => 0, 'meta_key' => 'kaltmiete', 'slider_step' => 100, ), 'immomakler_search_price_buy' => array( 'label' => 'Kaufpreis', 'slug' => 'kaufpreis', 'unit' => '€', 'decimals' => 0, 'meta_key' => 'kaufpreis', 'slider_step' => 25000, ), );}Personnaliser les tailles d’image
Section intitulée « Personnaliser les tailles d’image »add_filter('immomakler_image_sizes', 'custom_immomakler_image_sizes');function custom_immomakler_image_sizes($images_sizes) { $images_sizes['immomakler-archive-thumb'] = [ 'width' => 350, 'height' => 250, 'crop' => false, ]; $images_sizes['immomakler-archive-thumb-big'] = [ 'width' => 475, 'height' => 300, 'crop' => true, ]; $images_sizes['immomakler-archive-big'] = [ 'width' => 900, 'height' => 600, 'crop' => ['center', 'top'], ]; return $images_sizes;}Indiquez pour la hauteur, si possible, au moins 1,5 fois la largeur (sans recadrage). Si la hauteur est inférieure à la largeur, pour les photos au format paysage, la hauteur limite l’image et celle-ci est générée plus étroite que prévu — à l’affichage, elle est alors agrandie et apparaît floue. Pour en savoir plus, consultez Traitement des images du bien immobilier.
Mettre à jour la date de modification lors des mises à jour de bien immobilier
Section intitulée « Mettre à jour la date de modification lors des mises à jour de bien immobilier »Par défaut, la date de publication d’origine est conservée. Pour mettre à jour la date de modification à chaque mise à jour d’importation :
add_filter('immomakler_preserve_post_date_on_update', '__return_false');Créer une entrée de pays étranger dans les taxonomies
Section intitulée « Créer une entrée de pays étranger dans les taxonomies »add_filter('immomakler_mark_foreign_countries', '__return_true');Créer des types de bien personnalisés
Section intitulée « Créer des types de bien personnalisés »add_filter('immomakler_object_terms_types', 'custom_immomakler_object_terms_types', 10, 2);function custom_immomakler_object_terms_types($object_types, $openimmo_data) { if ($openimmo_data['gewerbe']) { $object_types[] = 'Gewerbe'; } if ($openimmo_data['verwaltung_objekt-user_defined_simplefield-xyz'] == 'PREMIUM') { $object_types[] = 'Premiumimmobilie'; } return $object_types;}Créer des types d’utilisation personnalisés
Section intitulée « Créer des types d’utilisation personnalisés »add_filter('immomakler_object_terms_nutzungsart', 'custom_immomakler_object_terms_nutzungsart', 10, 2);function custom_immomakler_object_terms_nutzungsart($object_nutzungsart, $openimmo_data) { if ($openimmo_data['verwaltung_objekt-user_defined_simplefield-xyz'] == 'PRIVAT') { $object_nutzungsart[] = 'Privat'; } if ($openimmo_data['verwaltung_objekt-user_defined_simplefield-xyz'] == 'INSTITUTIONELL') { $object_nutzungsart[] = 'Institutionell'; } return $object_nutzungsart;}Enregistrer et remplir une taxonomie personnalisée
Section intitulée « Enregistrer et remplir une taxonomie personnalisée »Exemple : créer une taxonomie de codes postaux et la remplir automatiquement lors de l’importation :
add_action('init', 'custom_immomakler_register_taxonomies');function custom_immomakler_register_taxonomies() { register_taxonomy('immomakler_search_plz', 'immomakler_object', array( 'labels' => array( 'name' => _x('Postleitzahlen', 'taxonomy general name'), 'singular_name' => _x('Postleitzahl', 'taxonomy singular name'), 'all_items' => _x('Alle Postleitzahlen', 'taxonomy choose all'), ), 'rewrite' => array( 'slug' => 'immobilien-plz', 'hierarchical' => false, 'with_front' => false, ), 'hierarchical' => false, 'query_var' => 'plz', 'public' => true, 'show_ui' => true, ));}
add_action('immomakler_after_post_create', 'custom_immomakler_index', 10, 2);function custom_immomakler_index($post_id, $openimmo_data) { if (!empty($openimmo_data['plz'])) { wp_set_object_terms($post_id, $openimmo_data['plz'], 'immomakler_search_plz'); }}Vérifier les critères de recherche d’une alerte de recherche
Section intitulée « Vérifier les critères de recherche d’une alerte de recherche »Avec le filtre immomakler_searchagents_validate_criteria, vous définissez vos propres règles sur les critères de recherche qu’une alerte de recherche peut contenir. WP-ImmoMakler applique le filtre avant qu’une alerte de recherche ne soit créée ou modifiée et avant l’envoi d’un e-mail. Si vous renvoyez un WP_Error, WP-ImmoMakler refuse l’alerte de recherche et affiche au prospect le message de l’erreur. Si vous renvoyez null, l’alerte de recherche est acceptée.
Le filtre reçoit trois paramètres :
| Paramètre | Contenu |
|---|---|
$error | Le résultat de la vérification intégrée : un WP_Error si une valeur minimale est supérieure à la valeur maximale correspondante, sinon null |
$criteria | Les critères de recherche sous forme de tableau, par exemple [ 'vermarktungsart' => 'kauf', 'von-zimmer' => '3' ]. Les plages se trouvent sous les clés von-… et bis-… |
$request | Les autres données du formulaire, par exemple email. Lors d’une modification depuis la liste de résultats, le tableau est vide |
L’exemple suivant refuse les alertes de recherche demandant plus de 20 pièces au minimum. La vérification intégrée est conservée, car le filtre renvoie inchangé un $error existant :
add_filter( 'immomakler_searchagents_validate_criteria', 'meine_suchauftrag_pruefung', 10, 3 );function meine_suchauftrag_pruefung( $error, $criteria, $request ) { if ( null === $error && isset( $criteria['von-zimmer'] ) && (float) $criteria['von-zimmer'] > 20 ) { return new WP_Error( 'zu_viele_zimmer', 'Veuillez vérifier le nombre de pièces.' ); } return $error;}Si votre filtre renvoie toujours null, vous désactivez aussi la vérification intégrée des plages contradictoires.
Référence complète des hooks
Section intitulée « Référence complète des hooks »Vous trouverez un aperçu complet de tous les filter hooks et action hooks disponibles, regroupés par catégories, sous Filtres et Action-Hooks.
Cela pourrait aussi vous intéresser
Section intitulée « Cela pourrait aussi vous intéresser »- Filtres et Action-Hooks — référence complète de tous les hooks, regroupés par catégories
- Rendre les personnalisations compatibles avec les mises à jour — le Child-Skin-Plugin comme emplacement sécurisé pour votre code personnalisé
- Personnaliser les templates — surcharger les fichiers skin pour des modifications de mise en page approfondies
- Hooks du formulaire de contact — hooks liés aux demandes et à l’envoi d’e-mails