Documentation

Getting started with WP-ImmoMakler

Here you find some essential documentation to get started with the extensive options of WP-ImmoMakler.

In case of in-depth questions, you can contact us via e-mail or phone as part of the licencing support, and we will assist you in finding a solution.

Installation

  1. Use the WordPress admin section to install WP-ImmoMakler® installation file ‘Plugins > Install’. Alternatively, you can upload the unpacked installation file directory immomakler/ to the FTP server in /wp-content/plugins/. You can activate the plugin now. The WordPress Plugin Manager will show you available updates and offer to install them automatically.
  2. In your WordPress root, create a directory /openimmo/ via FTP to store the files exported from your estate agent software.
  3. Set up a new export interface in your estate agent software. For this, set up FTP access to the server and potentially the directory /openimmo/. Select the newest OpenImmo XML version number and ‘send as ZIP’, if possible. A customer/vendor number or ID can be picked freely.
  4. Begin a ‘Portal export/sync’ from the estate agent software.
  5. The now exported files can be imported manually under ‘WP-ImmoMakler® > Property Import’ or an auto-import can be activated. Once auto-import is activated, the estate agent software will automatically compare the properties, there is no need to log on to WordPress again. WP-ImmoMakler® watches the directories continuously and imports new export files automatically.
  6. The imported properties can be found in the WordPress Admin Menu ‘WP-ImmoMakler® > Properties’.
  7. Visit http://www.your-website/immobilien/ to view the properties. To do so, you must have activated permalinks (search engine friendly URLs) under ‘Settings > Permalinks’.
  8. Select ‘Design > Menus’ and drag, for example, the element ‘Buy’ and ‘Rent’ from the ‘Marketing types’ box, to integrate properties into your menu. Create a ‘Link’ element to /immobilien/ to list all properties.
  9. Take a look at ‘WP-ImmoMakler® > Settings’ for additional configuration options and the ‘WP-ImmoMakler’ section in WordPress’ Customizer.

Layout adjustments and integration into your theme

By default, WP-ImmoMakler® uses a responsive layout based on Bootstrap 3 to present the properties. However, it can also be used without a Bootstrap-based WordPress Theme (a modified, with .immomakler{} wrapped Bootstrap 3 is supplied not to affect the CSS of the WordPress Theme used).

A custom CSS permits customising the presentation to one’s needs.
WP-ImmoMakler® permits to amend HTML templates comfortably via WordPress Child Themes. For this, WP-ImmoMakler® supplies a so-called Child Skin. Once the plugin is installed and activated, the Child Skin layout can be selected under ‘WP-ImmoMakler® > Settings’.

Now you can go to the plugin-directory /wp-content/plugins/immomakler/skins/bootstrap3/ and copy the individual files that you want to customise while remaining the directory structure of the Child Skin plugin. For presentation, WP-ImmoMakler® will choose the copy instead of the main skin of the same file name.

Use the copy to make the desired changes. This way, you can, for example, reorganise individual data boxes or redistribute double columns. The responsive behaviour can also be amended by changing the Bootstrap 3 CSS classes.

Exceptions:

  • wp-content/themes/your-theme/immomakler/functions.php is loaded before the functions.php located in the main skin.
    Functions within can also be overridden (pluggable functions).
  • wp-content/themes/your-theme/immomakler/css/immomakler.css is loaded additionally after the supplied CSS. Here, you can add additional CSS information or override existing ones. Please do not copy the entire CSS file. Instead, create an empty immomakler.css and add your styles only.

The best way to customise the archive or exposé pages of your theme is to add the content surrounding <div> containers of the files /header.php and /footer.php supplied in the Child Skin plugin, which will apply to the archive and single view. It is best to use if (is_immomakler_single()){ } else { } if you want to differentiate the views within.

Alternatively, you can copy, for example, the page.php (or the respective template desired) of the WordPress Theme used to archive-immomakler_object.php and single-immomakler_object.php and swap the the_content() or the entire loop for the respective part from the archive- immomakler_object.php or single-immomakler_object.php from WP-ImmoMakler.

Note for developers of custom themes: You can permanently integrate your WP-ImmoMakler® customisations into your theme by copying the files from the Child Skin into your theme wp-content/themes/your-theme/immomakler/.

In case of questions, feel free to contact us, and we will be at your disposal!

We integrate your theme (customisation to the theme template, i.e., layout, colour, single column or multiple columns) for a fixed fee as part of our integration service.

We also assist you with more extensive customisations to better suit your needs (subject to a charge depending on the scope of work).

Presentation of reference properties

WP-ImmoMakler® can display reference real estate as a separate menu item. The reference object data will be shown reduced only (only description text, pictures, and location; no prices, areas, et cetera)

The presentation can be customised with a personal template if desired to meet individual needs (display of references).

Reference properties must be marked as such; it tends to be done via the estate agent software. You have several options for this since reference properties are not standardised within OpenImmo XML.

Options:

onOffice
The ‘Marketing’ tab houses the ‘Reference real estate’ checkbox in the ‘Own website’ box. You must call the onOffice support (+49 241 44686-122) and ask for the activation of the so-called ‘marketing fields’ to ensure that these are transferred to your website. There is no need to set up anything in WP-ImmoMakler.

Other estate agent software
Here, you have two options:

  1. You add a new custom field, for example, the checkbox ‘Reference object’. Consult your software’s manual or support team if needed.
    The following user-defined fields are accepted by WP-ImmoMakler® already. Additional fields can be added on demand:
    immobilie-user_defined_anyfield-Referenz = 1 or 'true'
    real-estate-user_defined_anyfield-Referenzobjekt = 'true'
    ausstattung-user_defined_anyfield-Referenz = 1 or 'true'
    verwaltung_techn-user_defined_anyfield-Referenzobjekt = 'Ja'
  2. You add a new portal interface, for example, ’Reference website’, to which you export your reference properties. These exports must end in the openimmo/references/ directory of the server to be automatically marked as references.
  3. Please contact us to find an alternative solution if the above options do not work in your estate agent software, create additional costs, or a different workflow is desired.

Initially imported reference properties will be listed under /immobilien/referenzen/. They are available in the shortcodes with status=reference (Avada Theme: immobilien-status=reference).

Available shortcodes, work with WP-ImmoMakler® PLUS or higher

You can assign any WP_Query parameters to the [immomakler-archive], [immomakler-map], [immomakler-carousel] and [immomakler-flexslider] shortcodes to filter the displayed properties.
The columns parameter allows you to define the number of columns for [immomakler-searchagents-form] and [immomakler-archive]. A single-column search form is particularly useful for text-based widgets.
Please see the below section ‘Make custom field (post meta) available for queries’ in the section ‘Useful examples of applying filter hooks’ to make use of special values.

Search forms, for example, for the homepage or within a sidebar text-widget

[immomakler-search-form] (common 4-columns layout)
[immomakler-search-form columns=1] (vertical 1-column layout as on mobile devices)

Search slot for direct object ID search, for example, within a sidebar text-widget

[immomakler-search-for-id]

Real estate list, for example, for the homepage or theme pages

[immomakler-archive]
[immomakler-archive vermarktungsart=kauf status=referenz columns=2]
[immomakler-archive vermarktungsart=kauf typ=wohnung posts_per_page=3 columns=1]
​[immomakler-archive nutzungsart=gewerbe posts_per_page=-1 columns=2]
[immomakler-archive meta_key=kaufpreis meta_value=1000000 meta_compare='>']
[immomakler-archive meta_key=verwaltung_objekt-user_defined_simplefield-objekt_des_tages meta_value=1 posts_per_page=3 columns=3]

 

Map view of several real estate

[immomakler-map]
[immomakler-map vermarktungsart=kauf]
[immomakler-map vermarktungsart=kauf typ=wohnung ort=hamburg]

Carousel sliders, for example, for the homepage

[immomakler-flexslider] or [immomakler-carousel]
[immomakler-flexslider vermarktungsart=kauf]
[immomakler-flexslider typ=wohnung]
[immomakler-flexslider meta_key=kaufpreis meta_value=1000000 meta_compare='>' posts_per_page=10]
[immomakler-flexslider meta_key=verwaltung_objekt-user_defined_simplefield-objekt_des_tages meta_value=1 posts_per_page=10]

Form to create a search agent

This shortcode must only be applied to search results, for example, within a sidebar. Creating a search agent requires the global variable $wp_query of an executed WP-ImmoMakler® search.

​[immomakler-searchagents-form]
​[immomakler-searchagents-form-full]

Useful examples of applying filter hooks

WP-ImmoMakler® is equipped with numerous WordPress Filter and Action Hooks (see the entire list below), which allow you to change the output and import behaviour from outside the plugin code.

Below we listed some useful filters. Copy the relevant code examples in

the functions.php of your Child Skin plugin under wp-content/plugins/immomakler-child/functions.php and customise to your needs. On request, we can name you specific filters to meet your needs.

Make custom field (post meta) available for queries

From WP-ImmoMakler® 5.8 and later, not all real estate values are available as individual post meta key to improve performance.

The following filters allow you to create individual post meta fields to make them available for meta queries:

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

Define selection fields in the search mask (taxonomies)

See below for available taxonomies

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

Define fields for the advanced search (post meta fields)

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


Define the standard sorting filters for the list view

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

Define the size of real estate pictures

With 'crop' => true, pictures can be cropped to the stated value. With 'crop' => false, the stated value determines the borders.

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

Standard sizes are:

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 )
)

Set change date for real estate data updates to the current day.

By default, the real estate remains at the end of the list even after an update (date of the first publication on the website). Use this filter if you want it to appear at the front of the list after an update.

add_filter ('immomakler_preserve_post_date_on_update', '__return_false');

Generate country entry ‘Abroad’

By default, countries are created as taxonomy, which you can list under url /immobilien-in/spanien/. You can use the following category for immobilien-in/ausland/. You can define the primary country (not abroad) in the WP backend under ‘WP-ImmoMakler® > Settings > Import’.

add_filter ('immomakler_mark_foreign_countries', '__return_true');

Customising the galleria.io options for the exposé slideshow

add_filter('immomakler_galleria_options', 'immomakler_custom_galleria_options');
function immomakler_custom_galleria_options( $options ) {
    $options['transition'] = 'fade';
    $options['autoplay'] = '3000';
    return $options;
}

Creating own object types

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

Creating custom usage types based on user-defined fields from the estate agent software

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

Creating custom taxonomies

The following WordPress taxonomy example ‘immomakler_search_zip_code’ can be integrated, for instance, under ‘selection fields in the search mask’, as explained above, or used within a shortcode: [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' );
    }
}

List of available filters

Please search the respective filter name in the plugin code to find out its specific use, place of execution, and available parameters.

About the use of WordPress Filter Hooks

immomakler_allow_delete_post
immomakler_append_anbieternr_to_anid
immomakler_append_anbieternr_to_obid
immomakler_append_language_to_obid
immomakler_archive_on_delete
immomakler_archive_title
immomakler_attachment_caption
immomakler_attachment_data_path
immomakler_attachment_description
immomakler_attachment_icon_class
immomakler_attachment_nodes_before_processing
immomakler_attachment_title
immomakler_auto_publish_post
immomakler_available_taxonomies
immomakler_available_themes
immomakler_back_to_archive_link
immomakler_bebaubar_nach_mapping
immomakler_cart_add_to_cart
immomakler_cart_archive_title
immomakler_cart_archive_title_search
immomakler_cart_cookie_lifetime
immomakler_cart_searchable
immomakler_cart_show_cart
immomakler_cart_widget_item
immomakler_contact_form_with_posts
immomakler_contact_form_without_posts
immomakler_contactform_agb
immomakler_contactform_cc
immomakler_contactform_customer_is_sender
immomakler_contactform_enabled_fields
immomakler_contactform_mail_no_posts_subject
immomakler_contactform_mail_to_email
immomakler_contactform_mail_to_name
immomakler_contactform_mail_with_posts_subject
immomakler_contactform_mailfailed
immomakler_contactform_mailsent
immomakler_contactform_mandatory_fields
immomakler_contactform_message_text
immomakler_contactform_submit_value
immomakler_contactform_validationfailed
immomakler_contactform_widerruf
immomakler_contactform_widerruf_in_multiple_request
immomakler_country_taxonomy
immomakler_currency
immomakler_custom_max_execution_time
immomakler_default_currency
immomakler_default_order
immomakler_default_property_image_path_filename
immomakler_delete_imported_files_after_days
immomakler_disable_frontend
immomakler_email_attachments
immomakler_enqueue_bootstrap_js
immomakler_epass_diagram_size
immomakler_erschliessung_mapping
immomakler_feature_list_args
immomakler_feature_taxonomy
immomakler_find_duplicate_by
immomakler_galleria_options
immomakler_galleria_theme_file
immomakler_geocode_address
immomakler_geocode_address_if_hidden
immomakler_geocode_with_bundesland
immomakler_googlemaps_api_key
immomakler_hide_address
immomakler_home_country_iso
immomakler_image_sizes
immomakler_immomakler_object_type_add_objektart
immomakler_immomakler_object_type_add_objektart_detail
immomakler_import_basedir_abspath
immomakler_import_dir_abspath
immomakler_import_dir_max_depth
immomakler_import_notifications_recipient_email
immomakler_import_notifications_recipient_name
immomakler_import_post_type
immomakler_importer_only
immomakler_insert_attachment_args
immomakler_is_immomakler_archive
immomakler_is_immomakler_single
immomakler_iso_land_mapping
immomakler_language_code
immomakler_language_code_default
immomakler_link_icon_class
immomakler_list_files_sorted_by_field
immomakler_location_taxonomy
immomakler_log_import_to_file
immomakler_map_address_with_bundesland
immomakler_map_address_with_sublocality
immomakler_mark_as_reference_instead_of_delete
immomakler_max_attachments
immomakler_number_of_columns_archive
immomakler_number_of_columns_single
immomakler_nutzungsart_taxonomy
immomakler_object_country_slug
immomakler_object_feature_slug
immomakler_object_location_slug
immomakler_object_nutzungsart_slug
immomakler_object_status_message
immomakler_object_status_slug
immomakler_object_terms_country
immomakler_object_terms_feature
immomakler_object_terms_location
immomakler_object_terms_nutzungsart
immomakler_object_terms_status
immomakler_object_terms_types
immomakler_object_terms_vermarktungsart
immomakler_object_type_hierarchical
immomakler_object_type_slug
immomakler_object_vermarktung_slug
immomakler_objektart_list_args
immomakler_objektart_mapping
immomakler_opengraph_facebook_admins
immomakler_openimmo_data
immomakler_openimmo_data_before_set_post_meta
immomakler_openimmofeedback_key_for_oobj_id
immomakler_options_defaults
immomakler_options_sanitize
immomakler_person_post_type
immomakler_post_author
immomakler_post_title
immomakler_post_type_immomakler_object_args
immomakler_post_type_immomakler_person_args
immomakler_posts_per_page
immomakler_preis_zeiteinheit
immomakler_preserve_post_date_on_update
immomakler_property_subtitle
immomakler_property_type_taxonomy
immomakler_protect_duplicate_property_posts
immomakler_radiussearch_default_radius
immomakler_radiussearch_radius_values
immomakler_recaptcha_validationfailed
immomakler_search_archive_title
immomakler_search_button_text
immomakler_search_dropdown_show_children
immomakler_search_enabled_ranges
immomakler_search_enabled_taxonomies
immomakler_searchagents_confirmation_flash_message
immomakler_searchagents_no_confirm_mail_sent_flash_message
immomakler_searchagents_notification_email_body
immomakler_searchagents_notification_email_subject
immomakler_searchagents_please_confirm_email_subject
immomakler_searchagents_please_confirm_flash_message
immomakler_searchagents_unsubscribe_flash_message
immomakler_seo_permalinks
immomakler_settings_tabs
immomakler_show_ui_country
immomakler_show_ui_feature
immomakler_show_ui_location
immomakler_show_ui_nutzungsart
immomakler_show_ui_status
immomakler_show_ui_type
immomakler_show_ui_vermarktung
immomakler_single_title
immomakler_skin_bootstrap3_vertical_archive_layout
immomakler_status_taxonomy
immomakler_taxomomy_immomakler_object_country_args
immomakler_taxomomy_immomakler_object_feature_args
immomakler_taxomomy_immomakler_object_location_args
immomakler_taxomomy_immomakler_object_nutzungsart_args
immomakler_taxomomy_immomakler_object_status_args
immomakler_taxomomy_immomakler_object_type_args
immomakler_taxomomy_immomakler_object_vermarktung_args
immomakler_theme_bootstrap3_vertical_archive_layout
immomakler_use_timestamp_for_file_id
immomakler_user_defined_fields
immomakler_vermarktung_taxonomy
immomakler_video_links
immomakler_zustand_mapping

List of available actions

Please search the respective action names within the plugin code for their exact use, place of execution, and available parameters.

About using WordPress Action Hooks

immomakler_after_archive
immomakler_after_archive_item
immomakler_after_archive_items
immomakler_after_archive_no_items
immomakler_after_archiving_existing_post
immomakler_after_import_filelist
immomakler_after_import_zipfile
immomakler_after_pagination
immomakler_after_post_create
immomakler_after_save_attachments
immomakler_after_single
immomakler_after_single_details
immomakler_archive_property_actions
immomakler_archive_property_details_bottom
immomakler_archive_property_details_top
immomakler_before_archive
immomakler_before_archive_item
immomakler_before_archive_items
immomakler_before_archive_items_references
immomakler_before_archive_no_items
immomakler_before_contactform
immomakler_before_delete_post
immomakler_before_import_zipfile
immomakler_before_publish_post
immomakler_before_single
immomakler_before_single_details
immomakler_before_update_post
immomakler_end_epass
immomakler_search_form_after_ranges
immomakler_search_form_after_taxonomies
immomakler_search_form_begin
immomakler_search_form_end
immomakler_searchagents_after_form
immomakler_searchagents_before_form
immomakler_single_contact_begin
immomakler_single_contact_bottom
immomakler_single_description_end
immomakler_single_details_before_price
immomakler_single_details_begin
immomakler_single_details_end
immomakler_single_property_actions

List of the automatically generated categories

The import will fill the following taxonomies (categories) automatically and connect with the respective property. They can be used for search forms, menu items, and custom WP_Query or ‘get_posts()’ requests to categorise the real estate.

immomakler_object_type
immomakler_object_country
immomakler_object_vermarktung
immomakler_object_nutzungsart
immomakler_object_location
immomakler_object_feature
immomakler_object_status
Menu