Filtros y hooks: ejemplos prácticos
WP-ImmoMakler proporciona numerosos filter hooks y action hooks de WordPress con los que usted puede personalizar las salidas y el comportamiento del importador desde su propio código. Todos los ejemplos de código pertenecen al archivo /wp-content/plugins/immomakler-child/functions.php de su WP-ImmoMakler Child-Skin-Plugin.
Redirección tras una solicitud de contacto exitosa
Sección titulada «Redirección tras una solicitud de contacto exitosa»Redirigir a una página de confirmación propia tras enviar el formulario de contacto:
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>';}Activar eventos de analítica al enviar el formulario
Sección titulada «Activar eventos de analítica al enviar el formulario»Google Analytics
Sección titulada «Google Analytics»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>';}Google Tag Manager
Sección titulada «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>gtag("event", "form_submit_wp_immomakler", { objekt_id: "' . esc_attr(get_post_meta($requested_items[0], 'objektnr_extern', true)) . '" });</script>';}Hacer que los campos personalizados sean buscables
Sección titulada «Hacer que los campos personalizados sean buscables»Para que los campos meta personalizados se tengan en cuenta en las consultas de búsqueda de 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;}Definir campos de búsqueda avanzados
Sección titulada «Definir campos de búsqueda avanzados»Configurar campos de búsqueda basados en slider para superficie, número de habitaciones y precio:
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, ), );}Personalizar tamaños de imagen
Sección titulada «Personalizar tamaños de imagen»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;}Indique como altura, en la medida de lo posible, al menos 1,5 veces el ancho (sin recorte). Si la altura es menor que el ancho, en las fotos con formato apaisado la altura limita la imagen y esta se genera más estrecha de lo indicado; en la visualización se escala hacia arriba y se ve borrosa. Más información en Procesamiento de las imágenes de los inmuebles.
Actualizar la fecha de modificación al actualizar un inmueble
Sección titulada «Actualizar la fecha de modificación al actualizar un inmueble»De forma predeterminada, se conserva la fecha de publicación original. Para actualizar la fecha de modificación en cada actualización de importación:
add_filter('immomakler_preserve_post_date_on_update', '__return_false');Crear entrada de país extranjero en taxonomías
Sección titulada «Crear entrada de país extranjero en taxonomías»add_filter('immomakler_mark_foreign_countries', '__return_true');Crear tipos de inmueble personalizados
Sección titulada «Crear tipos de inmueble personalizados»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;}Crear tipos de uso personalizados
Sección titulada «Crear tipos de uso personalizados»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;}Registrar y rellenar una taxonomía personalizada
Sección titulada «Registrar y rellenar una taxonomía personalizada»Ejemplo: crear una taxonomía de código postal y rellenarla automáticamente durante la importación:
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'); }}Referencia completa de hooks
Sección titulada «Referencia completa de hooks»Puede encontrar una visión completa de todos los filter hooks y action hooks disponibles, agrupados por categorías, en Filter- y Action-Hooks.
También puede interesarle
Sección titulada «También puede interesarle»- Filter- y Action-Hooks — referencia completa de todos los hooks, agrupados por categorías
- Personalizar de forma segura ante actualizaciones — el Child-Skin-Plugin como lugar seguro para código propio
- Personalizar plantillas — sobreescribir archivos de skin para cambios de diseño profundos
- Hooks del formulario de contacto — hooks relacionados con solicitudes y envíos de correo electrónico