{"id":315187,"date":"2026-06-12T12:27:17","date_gmt":"2026-06-12T12:27:17","guid":{"rendered":"https:\/\/es.wordpress.org\/plugins\/homlity-real-estate\/"},"modified":"2026-08-26T19:03:06","modified_gmt":"2026-08-26T19:03:06","slug":"homlity-real-estate","status":"publish","type":"plugin","link":"https:\/\/ar.wordpress.org\/plugins\/homlity-real-estate\/","author":23241546,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.8.4","stable_tag":"2.8.4","tested":"7.1","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Homlity Real Estate","header_author":"Ecosistema Inmobiliario Homlity","header_description":"Homlity Real Estate, gestor de inmuebles, asesores, SEO y GEO listo para WordPress.","assets_banners_color":"","last_updated":"2026-08-26 19:03:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/homlity.com\/plugin-integracion-homlity-real-estate-para-wordpress\/","header_author_uri":"https:\/\/homlity.com\/","rating":0,"author_block_rating":0,"active_installs":10,"downloads":954,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.17":{"tag":"1.3.17","author":"homlity","date":"2026-06-12 12:26:43","revision":3570081},"1.3.18":{"tag":"1.3.18","author":"homlity","date":"2026-06-12 16:29:56","revision":3570315},"1.3.21":{"tag":"1.3.21","author":"homlity","date":"2026-06-18 22:11:54","revision":3577907},"1.3.22":{"tag":"1.3.22","author":"homlity","date":"2026-06-18 22:45:55","revision":3577939},"1.5.11":{"tag":"1.5.11","author":"homlity","date":"2026-07-16 13:35:50","revision":3610315},"1.5.7":{"tag":"1.5.7","author":"homlity","date":"2026-07-09 02:53:44","revision":3600934},"1.5.8":{"tag":"1.5.8","author":"homlity","date":"2026-07-14 23:08:56","revision":3608120},"2.0.0":{"tag":"2.0.0","author":"homlity","date":"2026-07-16 20:10:07","revision":3610707},"2.0.1":{"tag":"2.0.1","author":"homlity","date":"2026-07-17 16:18:06","revision":3611795},"2.1.0":{"tag":"2.1.0","author":"homlity","date":"2026-07-22 12:07:43","revision":3618551},"2.1.1":{"tag":"2.1.1","author":"homlity","date":"2026-07-24 15:45:59","revision":3621535},"2.2.0":{"tag":"2.2.0","author":"homlity","date":"2026-07-26 20:25:09","revision":3623792},"2.3.0":{"tag":"2.3.0","author":"homlity","date":"2026-07-27 12:47:05","revision":3624588},"2.3.12":{"tag":"2.3.12","author":"homlity","date":"2026-08-09 17:30:54","revision":3639615},"2.3.17":{"tag":"2.3.17","author":"homlity","date":"2026-08-11 15:53:34","revision":3642228},"2.3.2":{"tag":"2.3.2","author":"homlity","date":"2026-07-28 02:21:11","revision":3625290},"2.3.3":{"tag":"2.3.3","author":"homlity","date":"2026-07-31 20:48:24","revision":3630479},"2.3.7":{"tag":"2.3.7","author":"homlity","date":"2026-08-09 16:16:43","revision":3639564},"2.3.8":{"tag":"2.3.8","author":"homlity","date":"2026-08-09 16:55:55","revision":3639594},"2.8.3":{"tag":"2.8.3","author":"homlity","date":"2026-08-25 16:05:57","revision":3665657},"2.8.4":{"tag":"2.8.4","author":"homlity","date":"2026-08-26 19:03:06","revision":3667680}},"upgrade_notice":{"12.0.3":"<p>Maintenance release with WordPress.org compliance fixes.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3570315,"resolution":"128x128","location":"assets","locale":"","width":125,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3570315,"resolution":"256x256","location":"assets","locale":"","width":249,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.17","1.3.18","1.3.21","1.3.22","1.5.11","1.5.7","1.5.8","2.0.0","2.0.1","2.1.0","2.1.1","2.2.0","2.3.0","2.3.12","2.3.17","2.3.2","2.3.3","2.3.7","2.3.8","2.8.3","2.8.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Property listing in the WordPress admin dashboard.","2":"Property creation and editing form.","3":"Configuration of property types, operation types, and attributes.","4":"Public property detail page.","5":"Public property listing on the WordPress site."}},"plugin_section":[262246],"plugin_tags":[15643,4528,5070,5071,2199],"plugin_category":[],"plugin_contributors":[266831],"plugin_business_model":[],"class_list":["post-315187","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-agents","plugin_tags-listings","plugin_tags-property","plugin_tags-property-management","plugin_tags-real-estate","plugin_contributors-homlity","plugin_committers-homlity"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/homlity-real-estate\/assets\/icon-128x128.png?rev=3570315","icon_2x":"https:\/\/ps.w.org\/homlity-real-estate\/assets\/icon-256x256.png?rev=3570315","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Homlity Real Estate<\/strong> is a WordPress plugin built for the real estate industry. It allows agencies, brokers, and independent agents to create and manage professional property websites quickly and efficiently.<\/p>\n\n<p>Designed for multi-country and multi-currency operation, it adapts to the needs of real estate professionals across Latin America, Spain, and beyond.<\/p>\n\n<h3>Key Features<\/h3>\n\n<ul>\n<li><strong>Custom property post type<\/strong> for structured listing management.<\/li>\n<li><strong>Multi-country support<\/strong> with country, city, zone, and neighborhood fields.<\/li>\n<li><strong>Multi-currency support<\/strong> (COP, MXN, EUR, USD, and more).<\/li>\n<li><strong>Fully customizable<\/strong>:\n\n<ul>\n<li>Property types (houses, apartments, offices, retail, land, warehouses, etc.).<\/li>\n<li>Operation types (sale, rent, short-term, transfer, etc.).<\/li>\n<li>Custom attributes (bedrooms, bathrooms, parking, area, amenities, etc.).<\/li>\n<li>Property status (available, reserved, sold, rented, etc.).<\/li>\n<\/ul><\/li>\n<li><strong>Agent management<\/strong>: link properties to agents with per-property contact details.<\/li>\n<li><strong>Real estate SEO<\/strong>: clean URLs, metadata-ready structure, and JSON-LD\/schema-friendly field layout.<\/li>\n<li><strong>Page builder integrations<\/strong>: Elementor widgets, Divi module, WPBakery, and shortcodes.<\/li>\n<li><strong>Extensible architecture<\/strong>: hooks, filters, and modular structure for ERP and CRM integrations.<\/li>\n<\/ul>\n\n<h3>About Homlity<\/h3>\n\n<p>Homlity is a digital ecosystem focused on real estate web solutions, specializing in property website development, custom web applications, and integrations with real estate systems and ERPs.<\/p>\n\n<h3>Third-Party Libraries<\/h3>\n\n<p>This plugin bundles the following open-source libraries:<\/p>\n\n<ul>\n<li><strong>GLightbox<\/strong> \u2014 MIT License. Lightbox gallery for property photos.\nhttps:\/\/github.com\/biati-digital\/glightbox<\/li>\n<li><strong>Guzzle HTTP<\/strong> (guzzlehttp\/guzzle) \u2014 MIT License. HTTP client used for CRM integrations.\nhttps:\/\/github.com\/guzzle\/guzzle<\/li>\n<li><strong>Guzzle Promises<\/strong> (guzzlehttp\/promises) \u2014 MIT License. Async promise support for Guzzle.\nhttps:\/\/github.com\/guzzle\/promises<\/li>\n<li><strong>Guzzle PSR-7<\/strong> (guzzlehttp\/psr7) \u2014 MIT License. PSR-7 HTTP message implementation.\nhttps:\/\/github.com\/guzzle\/psr7<\/li>\n<li><strong>Dompdf<\/strong> (dompdf\/dompdf) \u2014 LGPL-2.1 License. Generates PDF technical sheets for properties.\nhttps:\/\/github.com\/dompdf\/dompdf<\/li>\n<li><strong>PHP Font Library<\/strong> (dompdf\/php-font-lib) \u2014 LGPL-2.1-or-later License. Font handling for Dompdf.\nhttps:\/\/github.com\/dompdf\/php-font-lib<\/li>\n<li><strong>PHP SVG Library<\/strong> (dompdf\/php-svg-lib) \u2014 LGPL-3.0-or-later License. SVG rendering for Dompdf.\nhttps:\/\/github.com\/dompdf\/php-svg-lib<\/li>\n<li><strong>HTML5 PHP<\/strong> (masterminds\/html5) \u2014 MIT License. HTML5 parser used by Dompdf.\nhttps:\/\/github.com\/Masterminds\/html5-php<\/li>\n<li><strong>PSR HTTP Client<\/strong> (psr\/http-client) \u2014 MIT License. HTTP client interface.\nhttps:\/\/github.com\/php-fig\/http-client<\/li>\n<li><strong>PSR HTTP Factory<\/strong> (psr\/http-factory) \u2014 MIT License. HTTP factory interface.\nhttps:\/\/github.com\/php-fig\/http-factory<\/li>\n<li><strong>PSR HTTP Message<\/strong> (psr\/http-message) \u2014 MIT License. HTTP message interface.\nhttps:\/\/github.com\/php-fig\/http-message<\/li>\n<li><strong>PHP CSS Parser<\/strong> (sabberworm\/php-css-parser) \u2014 MIT License. CSS parsing for Dompdf.\nhttps:\/\/github.com\/sabberworm\/PHP-CSS-Parser<\/li>\n<\/ul>\n\n<p>All MIT-licensed libraries are GPL-compatible. LGPL-licensed libraries (Dompdf, php-font-lib, php-svg-lib) are used as independent components and are compatible with GPL-2.0-or-later under the LGPL linking exception.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin may connect to the following external services:<\/p>\n\n<h4>WhatsApp (Meta Platforms, Inc.)<\/h4>\n\n<p>Used to generate contact links that open a WhatsApp conversation with a property agent, and to generate share links so visitors can send a property listing via WhatsApp.\n* <strong>Data sent:<\/strong> The agent's phone number and an optional pre-filled text message (property title and URL) are included in the link URL. No data is sent to WhatsApp servers unless the visitor clicks the link.\n* <strong>When:<\/strong> The link is generated on every property detail page that has an agent with a phone number configured. Data is only transmitted to WhatsApp when the visitor clicks the button.\n* <strong>Service provider:<\/strong> Meta Platforms, Inc.\n* <strong>Privacy policy:<\/strong> https:\/\/www.whatsapp.com\/legal\/privacy-policy\n* <strong>Terms of service:<\/strong> https:\/\/www.whatsapp.com\/legal\/terms-of-service<\/p>\n\n<h4>Google Maps (Google LLC)<\/h4>\n\n<p>Used to display an interactive map of the property location, a Street View preview, and a \"Get directions\" link on property detail pages.\n* <strong>Data sent:<\/strong> The property's geographic coordinates (latitude and longitude) stored by the site administrator. The visitor's IP address and browser information may be collected by Google when the map or Street View iframe loads.\n* <strong>When:<\/strong> Only on property detail pages where geographic coordinates have been saved. The map iframe is loaded automatically when the visitor opens the page.\n* <strong>Service provider:<\/strong> Google LLC.\n* <strong>Privacy policy:<\/strong> https:\/\/policies.google.com\/privacy\n* <strong>Terms of service:<\/strong> https:\/\/developers.google.com\/maps\/terms-20180207<\/p>\n\n<h4>YouTube (Google LLC)<\/h4>\n\n<p>Used to embed property video tours directly on property detail pages.\n* <strong>Data sent:<\/strong> The YouTube video ID is included in the iframe URL. The visitor's IP address and browser information may be collected by YouTube\/Google when the iframe loads.\n* <strong>When:<\/strong> Only on property detail pages that have a YouTube video URL saved. The iframe is loaded automatically when the visitor opens the page.\n* <strong>Service provider:<\/strong> Google LLC.\n* <strong>Privacy policy:<\/strong> https:\/\/policies.google.com\/privacy\n* <strong>Terms of service:<\/strong> https:\/\/www.youtube.com\/t\/terms<\/p>\n\n<h4>OpenStreetMap Nominatim (Geocoding)<\/h4>\n\n<p>Used to convert property addresses into geographic coordinates (latitude\/longitude).\n* <strong>Data sent:<\/strong> Street address, neighborhood, city, state\/region, and country entered by the site administrator.\n* <strong>When:<\/strong> Only when the administrator explicitly clicks the \"Geocode\" button in the property editor. No data is sent automatically.\n* <strong>Service:<\/strong> Nominatim geocoding API, operated by the OpenStreetMap Foundation.\n* <strong>Privacy policy:<\/strong> https:\/\/osmfoundation.org\/wiki\/Privacy_Policy\n* <strong>Terms of use:<\/strong> https:\/\/operations.osmfoundation.org\/policies\/nominatim\/<\/p>\n\n<h4>CKEditor 5 (CKSource \/ Mateusz Bukowski Foundation)<\/h4>\n\n<p>Used to provide a rich-text description editor for property listings inside the WordPress admin dashboard.\n* <strong>Data sent:<\/strong> No property or user data is sent to CKEditor's servers. The browser downloads the CKEditor 5 JavaScript library file from the CDN when an administrator opens the property editor. The download request includes the visitor's IP address and browser information as standard HTTP headers.\n* <strong>When:<\/strong> Only when an administrator opens the property editing screen in wp-admin. End users on the public website are never affected.\n* <strong>URL loaded:<\/strong> https:\/\/cdn.ckeditor.com\/ckeditor5\/39.0.1\/classic\/ckeditor.js\n* <strong>Service provider:<\/strong> CKSource Sp. z o.o. (operating as Mateusz Bukowski Foundation).\n* <strong>Privacy policy:<\/strong> https:\/\/ckeditor.com\/legal\/privacy-policy\/\n* <strong>Terms of service:<\/strong> https:\/\/ckeditor.com\/legal\/ckeditor-oss-license\/<\/p>\n\n<h4>CRM Integrations (Optional)<\/h4>\n\n<p>When a CRM integration is configured and enabled by the site administrator, the plugin synchronizes property data with external real estate CRM platforms.\n* <strong>Data sent:<\/strong> Property details (title, description, price, location, media), agent information.\n* <strong>When:<\/strong> Only when the administrator enables and configures a CRM connection. Disabled by default.\n* <strong>Note:<\/strong> The specific privacy policy and terms of service depend on the CRM provider configured by the site administrator.<\/p>\n\n<h4>Analytics \/ Visit Tracking (Optional)<\/h4>\n\n<p>The plugin includes optional built-in analytics to count property visits, contact clicks, and PDF downloads. This feature is <strong>disabled by default<\/strong> and must be explicitly enabled by the site administrator.\n* <strong>Data stored:<\/strong> Anonymized visitor identifier (random cookie), hashed IP address (SHA-256), hashed user-agent string (SHA-256), and event timestamps. All data is stored locally in the WordPress database and is never transmitted to external servers.\n* <strong>When:<\/strong> Only when the \"Enable Analytics\" option is active in the plugin settings. The plugin respects the WP Consent API if a compatible consent plugin is installed.\n* <strong>Important:<\/strong> When enabling this feature, site administrators are responsible for obtaining visitor consent in accordance with applicable privacy laws (GDPR, CCPA, etc.) and updating their site's privacy policy accordingly.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install it from the WordPress admin panel.<\/li>\n<li>Activate the plugin from the <strong>Plugins<\/strong> menu.<\/li>\n<li>Go to the <strong>Real Estate<\/strong> or <strong>Properties<\/strong> menu in the admin dashboard.<\/li>\n<li>Configure your countries, currencies, property types, and operation types.<\/li>\n<li>Create your first property and publish it.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20plugin%20limited%20to%20a%20specific%20country%3F\"><h3>Is this plugin limited to a specific country?<\/h3><\/dt>\n<dd><p>No. The plugin supports multiple countries and regions. You can configure countries, cities, and zones to match your market.<\/p><\/dd>\n<dt id=\"can%20i%20use%20multiple%20currencies%3F\"><h3>Can I use multiple currencies?<\/h3><\/dt>\n<dd><p>Yes. The plugin supports multiple currencies (COP, MXN, USD, EUR, etc.) and displays values based on your site configuration.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20any%20wordpress%20theme%3F\"><h3>Is it compatible with any WordPress theme?<\/h3><\/dt>\n<dd><p>The plugin follows WordPress coding standards and works with most themes. For best results, use a modern or custom-built theme.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20property%20types%20and%20operation%20types%3F\"><h3>Can I customize property types and operation types?<\/h3><\/dt>\n<dd><p>Yes. You can define your own property types (house, apartment, lot, office, etc.) and operation types (sale, rent, seasonal, etc.) to match your business model.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translation-ready%3F\"><h3>Is the plugin translation-ready?<\/h3><\/dt>\n<dd><p>Yes. The plugin uses standard WordPress translation mechanisms (.po\/.mo files) and works with WPML and Polylang.<\/p><\/dd>\n<dt id=\"who%20develops%20and%20maintains%20this%20plugin%3F\"><h3>Who develops and maintains this plugin?<\/h3><\/dt>\n<dd><p>Developed and maintained by <strong>Ecosistema Inmobiliario Homlity<\/strong>, a team specializing in real estate websites and digital solutions for the property sector.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.8.0<\/h4>\n\n<ul>\n<li>Homlity Real Estate incorpora una <strong>Developer API<\/strong> p\u00fablica y estable: doce acciones, cuatro filtros, once clases, tres interfaces y siete funciones globales bajo el namespace <code>Homlity\\Developer\\<\/code>. A partir de ahora un desarrollador externo puede construir integraciones con CRMs, portales, ERP, anal\u00edtica o IA como plugins independientes, sin modificar ni un archivo del plugin. Documentaci\u00f3n en https:\/\/homlity.com\/desarrolladores\/<\/li>\n<li>Nuevos eventos del ciclo de vida de un inmueble: creado, actualizado, borrado, sincronizado, cambio de estado y cambio de galer\u00eda. Se disparan cuando la escritura ha terminado del todo \u2014post, metadatos, taxonom\u00edas, fotos y asesor\u2014, no a mitad como hace <code>save_post<\/code> de WordPress, as\u00ed que una integraci\u00f3n recibe el inmueble completo y no uno sin precio ni fotos.<\/li>\n<li>La actualizaci\u00f3n de un inmueble informa de qu\u00e9 cambi\u00f3 exactamente. Un CRM que reenv\u00eda un registro id\u00e9ntico deja de provocar trabajo in\u00fatil en las integraciones, y una integraci\u00f3n puede saber si el cambio lo caus\u00f3 ella misma para no devolv\u00e9rselo al CRM en un bucle.<\/li>\n<li>Nuevo modelo p\u00fablico de inmueble. La galer\u00eda de un inmueble se guarda en cuatro formatos distintos seg\u00fan de d\u00f3nde vino, y los precios llegan de los CRM como texto libre; el modelo lo normaliza todo, de modo que ninguna integraci\u00f3n tenga que saberlo.<\/li>\n<li>Los datos personales del propietario captados por el formulario de consignaci\u00f3n \u2014nombre, documento, tel\u00e9fono, correo\u2014 y la respuesta cruda del CRM, que puede contener credenciales, no se publican a las extensiones. El modelo se construye desde una lista de campos permitidos, no descartando los prohibidos, as\u00ed que un dato nuevo tampoco puede colarse por descuido.<\/li>\n<li>La direcci\u00f3n exacta de un inmueble cuyo propietario pidi\u00f3 ocultarla sigue oculta tambi\u00e9n para las extensiones.<\/li>\n<li>Nuevo sistema de registro de extensiones con comprobaci\u00f3n autom\u00e1tica de compatibilidad. Una extensi\u00f3n que necesita una versi\u00f3n superior de Homlity, de PHP o de WordPress no arranca y lo explica, en vez de romper el sitio. Una extensi\u00f3n que falla al arrancar queda aislada y no se lleva por delante a las dem\u00e1s.<\/li>\n<li>Corregido: el plugin declaraba requisitos contradictorios. Composer exig\u00eda PHP 8.0, este archivo dec\u00eda PHP 7.4 y la cabecera del plugin no dec\u00eda nada, as\u00ed que un sitio con PHP 7.4 pod\u00eda instalarlo y romperse. Ahora los tres dicen PHP 8.0 y WordPress 5.8.<\/li>\n<li>Ning\u00fan cambio rompe compatibilidad: no se ha renombrado ni eliminado ninguna clase, funci\u00f3n, hook, opci\u00f3n ni metadato existente.<\/li>\n<\/ul>\n\n<h4>2.7.9<\/h4>\n\n<ul>\n<li>Corregido: el widget \"Destacados por ubicaci\u00f3n y tipo\" sal\u00eda sin estilos en la web p\u00fablica, por la misma raz\u00f3n que el de asesores: no declaraba la hoja donde vive su CSS, y Elementor solo carga lo que cada widget pide. Los grupos se apilaban en vez de repartirse en columnas y las listas sal\u00edan con las vi\u00f1etas del navegador. En Divi y WPBakery no pasaba. Los widgets por taxonom\u00eda \u2014\"Ciudades destacadas\" y sus hermanos\u2014 no estaban afectados: llevan su maquetaci\u00f3n en el propio marcado.<\/li>\n<\/ul>\n\n<h4>2.7.8<\/h4>\n\n<ul>\n<li>Corregido: el widget \"Asesores con inmuebles disponibles\" sal\u00eda sin estilos en la web p\u00fablica. En el editor de Elementor se ve\u00eda bien \u2014el plugin mete sus hojas dentro del iframe de previsualizaci\u00f3n\u2014, pero fuera de ah\u00ed Elementor solo carga lo que cada widget declara y este no declaraba ninguna, as\u00ed que la maquetaci\u00f3n de las tarjetas se deshac\u00eda al publicar. En Divi y WPBakery no pasaba, porque esos dos cargan la hoja para todo el sitio.<\/li>\n<li>Corregido: el widget no ense\u00f1aba la foto ni el tel\u00e9fono de los asesores sincronizados desde un CRM. Ped\u00eda el avatar con la funci\u00f3n de WordPress, que solo sabe de gravatar, y el tel\u00e9fono en dos campos que no son donde el CRM lo guarda. Ahora usa la misma cadena que el resto del sitio: foto del CRM, plugins de avatar, gravatar y, en \u00faltimo lugar, el logo de la inmobiliaria.<\/li>\n<li>Nuevo interruptor \"Mostrar en los listados de asesores del sitio\" en el perfil de cada asesor. Un asesor que deja la inmobiliaria conserva sus inmuebles publicados y su rol, as\u00ed que no hab\u00eda forma de distinguirlo de quien sigue: al desmarcarlo deja de aparecer en el widget, sin tocar sus inmuebles y sin dejar de ser el contacto en las fichas de los suyos. Viene marcado para todo el mundo, de modo que actualizar no oculta a nadie. Se puede decidir por c\u00f3digo con el filtro <code>homlity_agent_is_publicly_listed<\/code>.<\/li>\n<li>La consulta de asesores del widget pasa a <code>AvailableAgentsService<\/code>, en vez de estar copiada dentro de cada uno de los tres widgets. Los empates en n\u00famero de inmuebles se desempatan por nombre, as\u00ed que el orden del listado deja de cambiar entre una visita y la siguiente.<\/li>\n<\/ul>\n\n<h4>2.7.7<\/h4>\n\n<ul>\n<li>El bot\u00f3n \"Descargar ficha t\u00e9cnica\" avisa de que est\u00e1 trabajando. Componer el PDF tarda \u2014el generador arma la ficha, se trae las fotos del inmueble y las rasteriza\u2014, y como la respuesta llega como archivo adjunto el navegador no navega ni pinta ning\u00fan indicador: el bot\u00f3n se quedaba quieto y sin decir nada hasta que la descarga aparec\u00eda, as\u00ed que parec\u00eda que el clic no hab\u00eda llegado. Ahora muestra un aro girando y el texto \"Generando ficha\u2026\" mientras dura la espera, no acepta un segundo clic hasta terminar \u2014cada uno vuelve a componer la ficha entera en el servidor\u2014 y avisa si algo falla en lugar de dejar el bot\u00f3n mudo. Sin JavaScript el enlace sigue descargando el PDF como hasta ahora.<\/li>\n<li>Corregido: cuando el servidor devolv\u00eda una p\u00e1gina de error en lugar del PDF, el navegador la guardaba igualmente con extensi\u00f3n .pdf y el visitante se quedaba con un archivo que no abre. Ahora se detecta y se avisa.<\/li>\n<\/ul>\n\n<h4>2.7.1<\/h4>\n\n<ul>\n<li>Corregido: cuando WordPress rechazaba el guardado de un inmueble venido de un CRM, el servicio de sincronizaci\u00f3n escrib\u00eda sus metadatos, taxonom\u00edas y asesor sobre el post con ID 1 del sitio. El error de WordPress se convert\u00eda a entero antes de comprobarlo, y un objeto convertido a entero vale 1, as\u00ed que la comprobaci\u00f3n de error no llegaba a ejecutarse nunca. Ahora un fallo al guardar se devuelve como tal y no se escribe nada.<\/li>\n<li>Corregido: la cach\u00e9 del m\u00f3dulo de homologaci\u00f3n s\u00f3lo se invalidaba a medias al escribir. Tras crear un mapeo, la consulta por origen segu\u00eda respondiendo \"no existe\" durante cinco minutos \u2014as\u00ed que cada inmueble repet\u00eda la b\u00fasqueda por nombre\u2014, y al sustituir un mapeo que apuntaba a un t\u00e9rmino borrado el reemplazo se perd\u00eda. Ahora una escritura invalida todo lo memorizado.<\/li>\n<li>Corregido: en las preguntas frecuentes autom\u00e1ticas, el valor de administraci\u00f3n no heredaba la moneda de la venta cuando no ten\u00eda una propia. La comprobaci\u00f3n usaba <code>??<\/code>, que s\u00f3lo responde ante un valor nulo, y la moneda sin informar llega como cadena vac\u00eda; el respaldo nunca se activaba y la cuota se publicaba sin unidad.<\/li>\n<li>La ret\u00edcula del PDF de la ficha t\u00e9cnica pasa a p\u00edxeles fijos: columnas de 240 px sobre los 737 \u00fatiles de una A4, en vez de porcentajes. El generador de PDF no aplica <code>box-sizing<\/code>, as\u00ed que un 33,33 % no entraba tres veces y el reparto depend\u00eda de cu\u00e1nto padding llevara cada secci\u00f3n.<\/li>\n<li>El logo de la cabecera ocupa el ancho completo del t\u00edtulo cuando el sitio no tiene logo configurado.<\/li>\n<li>Corregido: la descripci\u00f3n del inmueble insertaba la p\u00e1gina entera del constructor. Con Elementor activo, el filtro <code>the_content<\/code> devuelve el documento completo sin mirar lo que recibe, as\u00ed que la ficha t\u00e9cnica \u2014en pantalla y en PDF\u2014 y los widgets \"Contenido del inmueble\" y \"Resumen del inmueble\" acababan con la p\u00e1gina dentro. Ahora se pinta el texto del inmueble, sin shortcodes, con respaldo al extracto y con el filtro <code>homlity_property_description<\/code> para quien necesite otra cosa.<\/li>\n<li>La ficha t\u00e9cnica en PDF usa el color corporativo configurado en SEO &amp; GEO \u2192 Marca visual, que hasta ahora se guardaba y no lo le\u00eda nadie. Los encabezados y los bordes toman \"Color principal\", y los botones su propio par \"Color de botones\" y \"Color de texto en bot\u00f3n\". El color del widget sigue mandando sobre todos para esa ficha, y un sitio que no haya tocado esa pesta\u00f1a conserva el color general del plugin.<\/li>\n<li>La foto del asesor en el PDF ya no se deforma: va recortada en redondo dentro de un marco fijo, y llena el marco por el lado que corresponda seg\u00fan sea vertical o apaisada. Sale de la misma cadena de preferencia que usan los widgets \u2014foto del CRM, plugins de avatar, gravatar\u2014, as\u00ed que la ficha ense\u00f1a la misma foto que el resto del sitio. El logo de la inmobiliaria se centra junto a los datos de contacto y ya no se repite a la derecha cuando el asesor no tiene foto.<\/li>\n<li>La ficha t\u00e9cnica en PDF deja de repetir datos: el asesor y la inmobiliaria salen en la cabecera y el pie de cada p\u00e1gina, y ya no se vuelven a listar en tarjetas aparte ni en el cierre. Una ficha completa baja de cuatro p\u00e1ginas a tres.<\/li>\n<li>La ficha t\u00e9cnica en PDF se rehace con el dise\u00f1o de la ficha del sistema: cabecera y pie de p\u00e1gina repetidos en cada hoja, tarjetas con encabezado en el color de la marca, cifras y caracter\u00edsticas en tres columnas, cat\u00e1logo de hasta nueve fotos y botones de WhatsApp para contactar, agendar visita u ofertar. La ficha en pantalla no cambia.<\/li>\n<li>Eliminado el widget \"Inmuebles relacionados\" de Elementor, Divi y WPBakery. El widget \"Listado de inmuebles\" ya cubre lo mismo con su modo de consulta \"Inmuebles relacionados al inmueble de la p\u00e1gina\", que adem\u00e1s permite elegir taxonom\u00edas, estrategia de coincidencia y qu\u00e9 hacer cuando no hay resultados. La plantilla de inmueble que genera el plugin deja de incluir la secci\u00f3n; donde el widget ya est\u00e9 colocado hay que sustituirlo a mano por el listado en ese modo.<\/li>\n<li>Los datos del asesor se exponen a Elementor como etiquetas din\u00e1micas: \"Asesor: dato\" (nombre, cargo, tel\u00e9fono, correo, biograf\u00eda, sitio web y n\u00famero de inmuebles), \"Asesor: enlace\" (perfil, WhatsApp, llamada, correo y sitio web) y \"Asesor: foto\". Funcionan en \/author\/{asesor}\/ y en la ficha del inmueble, y admiten fijar un asesor concreto para previsualizar en el editor.<\/li>\n<\/ul>\n\n<h4>2.7.0<\/h4>\n\n<ul>\n<li>El bot\u00f3n \"Ficha t\u00e9cnica\" descarga el PDF del inmueble en lugar de abrir la ficha en una pesta\u00f1a nueva.<\/li>\n<li>El widget trae un nuevo control \"Acci\u00f3n\" por si se prefiere seguir abriendo la ficha en el sitio.<\/li>\n<li>Nuevo filtro <code>homlity_technical_sheet_pdf_available<\/code>.<\/li>\n<li>El widget \"Asesor del inmueble\" permite disponer la tarjeta en vertical (foto sobre los datos) u horizontal (foto al lado), y por dispositivo.<\/li>\n<li>El widget \"Listado de inmuebles\" a\u00f1ade el origen de consulta \"Inmuebles del asesor de la p\u00e1gina\", con un asesor de referencia opcional para la vista previa del editor.<\/li>\n<li>Corregido: con Elementor, la p\u00e1gina del asesor \/author\/{asesor}\/ y la ficha t\u00e9cnica \/ficha-tecnica\/{inmueble}\/ se serv\u00edan sin la hoja de estilos del plugin.<\/li>\n<li>Corregido: con Elementor, los widgets del plugin colocados fuera de una p\u00e1gina de inmuebles se pintaban sin estilos; ahora cada widget declara la hoja que necesita.<\/li>\n<li>El PDF de la ficha t\u00e9cnica se redise\u00f1a para aprovechar el espacio: informaci\u00f3n general, dimensiones, finanzas, caracter\u00edsticas, fotos y enlaces multimedia van a tres columnas, y las fotos se acotan a 150 px de ancho. Una ficha completa pasa de ocho p\u00e1ginas a dos.<\/li>\n<\/ul>\n\n<h4>2.6.0<\/h4>\n\n<ul>\n<li>El perfil p\u00fablico del asesor pasa a su URL de usuario: \/author\/{asesor}\/. Muestra foto, nombre, cargo, correo, tel\u00e9fono, descripci\u00f3n e inmuebles relacionados.<\/li>\n<li>Solo se toman los usuarios que son asesores (rol de asesor o con inmuebles asignados); el archivo de autor del resto lo sigue sirviendo el tema.<\/li>\n<li>La ruta anterior \/property-agent\/{asesor}\/ redirige con 301 a la URL de usuario, para no competir consigo misma en el \u00edndice.<\/li>\n<li>La p\u00e1gina de perfil maquetada con Divi o WPBakery ya se renderiza tambi\u00e9n en la URL de autor (antes solo Elementor).<\/li>\n<li>Nuevos filtros: <code>homlity_agent_profile_use_author_url<\/code> (volver a la ruta antigua si el sitio tiene desactivados los archivos de autor) y <code>homlity_user_is_agent<\/code>.<\/li>\n<\/ul>\n\n<h4>2.5.0<\/h4>\n\n<ul>\n<li>Corregido: el orden \"Precio: menor a mayor\" (y mayor a menor) no ordenaba nada. WordPress resolv\u00eda <code>meta_value_num<\/code> contra el filtro de disponibilidad en lugar del precio.<\/li>\n<li>Corregido: la b\u00fasqueda por c\u00f3digo y por palabra clave pod\u00eda no devolver resultados en servidores con MySQL 5.7+ (ONLY_FULL_GROUP_BY).<\/li>\n<li>Ficha t\u00e9cnica editable con Elementor, Divi y WPBakery: nuevo widget \"Ficha t\u00e9cnica del inmueble\" con controles de espaciado, m\u00e1rgenes, colores y visibilidad por secci\u00f3n.<\/li>\n<li>Nueva p\u00e1gina configurable en Configuraci\u00f3n \u2192 Plantillas (\"P\u00e1gina de ficha t\u00e9cnica\"); la ficha pasa a servirse en \/ficha-tecnica\/{inmueble}\/ y la renderiza el maquetador.<\/li>\n<li>La direcci\u00f3n del inmueble ya no se publica en la ficha (opcional desde el widget).<\/li>\n<li>Corregidos desbordamientos que cortaban datos largos, URLs, tablas e im\u00e1genes de la descripci\u00f3n.<\/li>\n<li>Nuevo shortcode [homlity_technical_sheet].<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li>Cada asesor tiene su p\u00e1gina p\u00fablica en \/property-agent\/{asesor}\/, editable con Elementor, Divi o WPBakery.<\/li>\n<li>El widget de asesor a\u00f1ade la fuente \"Asesor de la p\u00e1gina\", que toma el asesor de la consulta actual.<\/li>\n<li>El widget de listado de inmuebles puede mostrar solo los inmuebles de un asesor (el de la p\u00e1gina o uno fijo).<\/li>\n<\/ul>\n\n<h4>2.3.16<\/h4>\n\n<ul>\n<li>Added centralized, privacy-safe error reporting for official Homlity plugins.<\/li>\n<li>Added bounded retries, license-aware Homi delivery and the Incidencias diagnostics tab.<\/li>\n<\/ul>\n\n<h4>2.3.15<\/h4>\n\n<ul>\n<li>Prevented stale image-CDN thumbnails from showing photos that belong to another property.<\/li>\n<li>Added per-attachment cache versioning to property gallery image URLs.<\/li>\n<\/ul>\n\n<h4>2.3.14<\/h4>\n\n<ul>\n<li>Added an admin Versiones tab for Homlity plugin upgrades and controlled downgrades from Homi.<\/li>\n<li>Added permission, compatibility, HTTPS, checksum, fresh-catalog and WordPress rollback safeguards.<\/li>\n<\/ul>\n\n<h4>12.0.3<\/h4>\n\n<ul>\n<li>WordPress.org compliance: readme translated to English.<\/li>\n<li>Reduced tags to 5.<\/li>\n<li>Updated \"Tested up to\" to WordPress 6.9.<\/li>\n<li>Plugin name changed to Homlity Real Estate.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Basic property management.<\/li>\n<li>Property types, operation types, and custom attributes.<\/li>\n<li>Multi-country and multi-currency support.<\/li>\n<li>Basic WordPress admin panel integration.<\/li>\n<\/ul>","raw_excerpt":"Real estate plugin to manage property listings, agents, currencies, and multi-country configurations in WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/315187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=315187"}],"author":[{"embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/homlity"}],"wp:attachment":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=315187"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=315187"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=315187"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=315187"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=315187"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=315187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}