Ir al contenido

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

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

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

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

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

Puede encontrar una visión completa de todos los filter hooks y action hooks disponibles, agrupados por categorías, en Filter- y Action-Hooks.