Nützliche Beispiele für die Anwendung der Filter-Hooks
WP-ImmoMakler ist mit vielen WordPress Filter- und Action-Hooks versehen (vollständige Liste siehe unten), durch die sich von außerhalb des Plugin-Codes in das Verhalten der Ausgabe, aber auch vor allem das Verhalten des Importers eingreifen lässt.
Folgend sind ein paar nützliche Filter aufgeführt. Kopieren Sie die für Sie relevanten Code-Beispiele in die functions.php
Ihres Child-Skin-Plugins unter /wp-content/plugins/immomakler-child/functions.php
und passen Sie sie an Ihre Bedürfnisse an. Gerne nennen wir Ihnen auf Anfrage die genauen Filter für Ihre speziellen WünscheQ
Custom Fields (Post Meta) für Queries verfügbar machen
Um die Suchperformance deutlich zu steigern sind ab WP-ImmoMakler Version 5.8 nicht mehr alle Immobilien-Werte als eigener Post Meta Key verfügbar.
Mit folgendem Filter können einzelne Felder als eigenes Post Meta Feld angelegt werden, um sie für Meta Queries verfügbar zu machen:
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;
}
Auswahlfelder in der Suchmaske (Taxonomies) definieren
Verfügbare Taxonomien siehe weiter unten.
add_filter('immomakler_search_enabled_taxonomies', 'my_immomakler_search_taxonomies');
function my_immomakler_search_taxonomies( $taxomonies ) {
return array(
'immomakler_object_vermarktung',
'immomakler_object_nutzungsart',
'immomakler_object_type',
'immomakler_object_location',
);
}
Felder in der erweiterten Suche (Post Meta Fields) definieren
add_filter('immomakler_search_enabled_ranges', 'my_immomakler_search_ranges');
function my_immomakler_search_ranges( $ranges ) {
return array(
'immomakler_search_size' => array(
'label' => 'Wohnfläche',
'slug' => 'qm',
'unit' => 'm²',
'decimals' => 0,
'meta_key' => 'wohnflaeche',
'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
),
);
}
Standardsortierung der Listenansicht definieren
add_filter('immomakler_default_order', 'custom_immomakler_default_order');
function custom_immomakler_default_order( $im_order ) {
return 'priceasc'; // möglich sind: 'priceasc', 'pricedesc', 'dateasc', 'datedesc'
}
Größe der Immobilienbilder festlegen
Mit 'crop' => true
werden die Bilder auf die angegebene Größe zugeschnitten. Mit 'crop' => false
wird in die angegebenen Grenzen skaliert.
add_filter('immomakler_image_sizes', 'custom_immomakler_image_sizes');
function custom_immomakler_image_sizes( $images_sizes ) {
$images_sizes['immomakler-archive-thumb'] = array( 'width' => 350, 'height' => 250, 'crop' => false );
return $images_sizes;
}
Die Standardgrößen sind:
array(
'immomakler-gallery-big' => array( 'width' => 900, 'height' => 900, 'crop' => false ),
'immomakler-gallery-thumb' => array( 'width' => 100, 'height' => 60, 'crop' => false ),
'immomakler-archive-thumb' => array( 'width' => 360, 'height' => 390, 'crop' => false ),
'immomakler-archive-thumb-big' => array( 'width' => 475, 'height' => 475, 'crop' => false ),
'immomakler-person-thumb' => array( 'width' => 190, 'height' => 190, 'crop' => false )
)
Änderungsdatum bei Immobiliendaten-Updates auf den aktuellen Tag setzen
Standardmäßig bleibt eine Immobilie auch nach einem Update ganz hinten in der Liste, zum Datum der Erstveröffentlichung auf der Website. Wenn sie aber nach einem Update wieder vorn eingereiht werden soll, nutzen Sie diesen Filter.
add_filter ('immomakler_preserve_post_date_on_update', '__return_false');
Ländereintrag “Ausland” generieren
Standardmäßig werden Länder als Taxonomy generiert, die dann unter der URL /immobilien-in/spanien/ gelistet werden können. Für eine Kategorie /immobilien-in/ausland/ nutzen Sie folgenden Filter. Das Hauptland (nicht-Ausland) können Sie im WP-Backend unter WP-ImmoMakler > Einstellungen > Import einstellen.
add_filter ('immomakler_mark_foreign_countries', '__return_true');
add_filter('immomakler_galleria_options', 'immomakler_custom_galleria_options');
function immomakler_custom_galleria_options( $options ) {
$options['transition'] = 'fade';
$options['autoplay'] = '3000';
return $options;
}
Generierung eigener Objektarten
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;
}
Generierung eigener Nutzungsarten anhand benutzerdefinierter Felder aus der Maklersoftware
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;
}
Generierung einer eigenen Taxonomy
Diese in folgendem Beispiel erstellte WordPress Taxonomy “immomakler_search_plz” kann dann z.B. wie oben beschrieben unter “Auswahlfelder in der Suchmaske” eingebunden werden oder in einem Shortcode verwendet werden: [[immomakler-archive vermarktungsart=kauf plz=”12345,12355,12347″]]
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' );
}
}