Aller au contenu

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 »
add_filter('immomakler_contactform_mailsent',
'immomakler_contactform_mailsent_analytics_event', 10, 2);
function immomakler_contactform_mailsent_analytics_event($response, $requested_items) {
return $response . '<script>ga("send", "event", "Direktanfrage", "versendet", "' .
get_post_meta($requested_items[0], 'objektnr_extern', true) . '");</script>';
}
add_filter('immomakler_contactform_mailsent',
'immomakler_contactform_mailsent_gtm_event', 10, 2);
function immomakler_contactform_mailsent_gtm_event($response, $requested_items) {
return $response . '<script>gtag("event", "form_submit_wp_immomakler",
{ objekt_id: "' . esc_attr(get_post_meta($requested_items[0],
'objektnr_extern', true)) . '" });</script>';
}

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;
}

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' => '',
'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,
),
);
}
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');
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;
}
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');
}
}

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.