Zum Inhalt springen

Filter & Actions: Beispiele

WP-ImmoMakler stellt zahlreiche WordPress-Filter-Hooks und Action-Hooks bereit, mit denen Sie Ausgaben und Importer-Verhalten aus eigenem Code heraus anpassen können. Alle Code-Beispiele gehören in die Datei /wp-content/plugins/immomakler-child/functions.php Ihres WP-ImmoMakler Child-Skin-Plugins.

Nach dem Absenden des Kontaktformulars zur einer eigenen Bestätigungsseite weiterleiten:

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

Analytics-Events bei Formular-Einsendung auslösen

Abschnitt betitelt „Analytics-Events bei Formular-Einsendung auslösen“
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>';
}

Damit benutzerdefinierte Meta-Felder in WP_Query-Suchanfragen berücksichtigt werden:

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

Slider-basierte Suchfelder für Fläche, Zimmerzahl und Preis konfigurieren:

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

Standardmäßig bleibt das ursprüngliche Veröffentlichungsdatum erhalten. Um das Änderungsdatum bei jedem Import-Update zu aktualisieren:

add_filter('immomakler_preserve_post_date_on_update', '__return_false');
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;
}

Beispiel: eine Postleitzahl-Taxonomie anlegen und beim Import automatisch befüllen:

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

Eine vollständige, nach Kategorien gruppierte Übersicht aller verfügbaren Filter- und Action-Hooks finden Sie unter Filter- und Action-Hooks.