{"id":295902,"date":"2026-04-08T19:33:13","date_gmt":"2026-04-08T19:33:13","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/portal-imoveis-feed-xml-opennavent\/"},"modified":"2026-04-08T19:29:55","modified_gmt":"2026-04-08T19:29:55","slug":"uqbitz-hub-imoveis","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/uqbitz-hub-imoveis\/","author":5586801,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.4.1","stable_tag":"3.4.1","tested":"6.9.4","requires":"6.5","requires_php":"8.0","requires_plugins":null,"header_name":"UQBITZ Hub de Integracao Imobiliaria","header_author":"Fernando Perrella (UQBITZ)","header_description":"Generates an OpenNavent XML feed to sync WordPress property listings with real estate portals (ImovelWeb, Wimoveis, Casa Mineira).","assets_banners_color":"296465","last_updated":"2026-04-08 19:29:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/feperrella\/uqbitz-hub-imoveis","header_author_uri":"https:\/\/uqbitz.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":37,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"3.2.0":{"tag":"3.2.0","author":"feperrella","date":"2026-04-08 19:29:55"},"3.3.0":{"tag":"3.3.0","author":"feperrella","date":"2026-04-08 19:29:55"},"3.4.0":{"tag":"3.4.0","author":"feperrella","date":"2026-04-08 19:29:55"},"3.4.1":{"tag":"3.4.1","author":"feperrella","date":"2026-04-08 19:29:55"}},"upgrade_notice":{"3.4.1":"<p>Code formatting only \u2014 no functional changes.<\/p>","3.4.0":"<p>Refactored plugin structure into modular files. Fixed infrastructure items not appearing in XML feed.<\/p>","3.3.0":"<p>Breaking: CPT, taxonomy, and REST namespace renamed with <code>uqbhi_<\/code> prefix. Feed URL changed to <code>\/wp-json\/uqbhi\/v1\/feed<\/code>. Update the URL in your portal.<\/p>","3.2.0":"<p>Security improvements: output escaping and input sanitization. Recommended update.<\/p>","3.0.0":"<p>Feed URL changed to <code>\/wp-json\/uqbhi\/v1\/feed<\/code>. Update the URL in your portal.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3501950,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3501950,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3501950,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3501950,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["3.2.0","3.3.0","3.4.0","3.4.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3501950,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3501950,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3501950,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"Overview dashboard \u2014 feed status with property list and pending issues","2":"Settings \u2014 agency code and contact information","3":"Field mapping \u2014 technical ACF to XML field reference table","4":"Property editing \u2014 organized ACF fields"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[252,259764,5070,2199,748],"plugin_category":[39],"plugin_contributors":[189449],"plugin_business_model":[],"class_list":["post-295902","plugin","type-plugin","status-publish","hentry","plugin_tags-feed","plugin_tags-opennavent","plugin_tags-property","plugin_tags-real-estate","plugin_tags-xml","plugin_category-business","plugin_contributors-feperrella","plugin_committers-feperrella"],"banners":{"banner":"https:\/\/ps.w.org\/uqbitz-hub-imoveis\/assets\/banner-772x250.png?rev=3501950","banner_2x":"https:\/\/ps.w.org\/uqbitz-hub-imoveis\/assets\/banner-1544x500.png?rev=3501950","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/uqbitz-hub-imoveis\/assets\/icon-128x128.png?rev=3501950","icon_2x":"https:\/\/ps.w.org\/uqbitz-hub-imoveis\/assets\/icon-256x256.png?rev=3501950","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/uqbitz-hub-imoveis\/assets\/screenshot-1.png?rev=3501950","caption":"Overview dashboard \u2014 feed status with property list and pending issues"},{"src":"https:\/\/ps.w.org\/uqbitz-hub-imoveis\/assets\/screenshot-2.png?rev=3501950","caption":"Settings \u2014 agency code and contact information"},{"src":"https:\/\/ps.w.org\/uqbitz-hub-imoveis\/assets\/screenshot-3.png?rev=3501950","caption":"Field mapping \u2014 technical ACF to XML field reference table"}],"raw_content":"<!--section=description-->\n<p>UQBITZ Hub de Integra\u00e7\u00e3o Imobili\u00e1ria is a WordPress plugin that automatically generates an XML feed in the OpenNavent format to synchronize property listings with major Brazilian real estate portals.<\/p>\n\n<p><strong>Supported portals:<\/strong><\/p>\n\n<ul>\n<li>ImovelWeb<\/li>\n<li>Wimoveis<\/li>\n<li>Casa Mineira<\/li>\n<\/ul>\n\n<p><strong>Key features:<\/strong><\/p>\n\n<ul>\n<li>Automatic XML feed at <code>\/wp-json\/uqbhi\/v1\/feed<\/code><\/li>\n<li>Custom Post Type \"Im\u00f3vel\" with full ACF (Advanced Custom Fields) support<\/li>\n<li>Taxonomies: Property Type, Purpose, City &amp; Neighborhood<\/li>\n<li>Required field validation \u2014 incomplete listings are excluded from the feed<\/li>\n<li>Admin dashboard with feed status, instructions, and technical field mapping<\/li>\n<li>Automatic amenity and infrastructure mapping to Navent IDs<\/li>\n<li>YouTube video support (automatic code extraction)<\/li>\n<li>Floor plan gallery with custom titles<\/li>\n<li>Auto-fill address from ZIP code (via ViaCEP API)<\/li>\n<li>Complete property type\/subtype mapping to the Navent API<\/li>\n<\/ul>\n\n<p><strong>Validated required fields:<\/strong><\/p>\n\n<ul>\n<li>Title (min. 5 characters)<\/li>\n<li>Description (min. 50 characters)<\/li>\n<li>Price (sale or rental)<\/li>\n<li>Photo gallery (min. 5 images)<\/li>\n<li>Type and Purpose<\/li>\n<li>Full address (ZIP, street, neighborhood, city, state)<\/li>\n<li>Private area (m\u00b2)<\/li>\n<li>Property tax (IPTU)<\/li>\n<li>Property age<\/li>\n<li>Condo fee (required for apartments and gated communities)<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>uqbitz-hub-imoveis<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin in the WordPress dashboard<\/li>\n<li>Go to <strong>Hub Im\u00f3veis \u2192 Settings<\/strong> and fill in:\n\n<ul>\n<li>Real estate agency code (provided by the portal)<\/li>\n<li>Contact email, name, and phone<\/li>\n<\/ul><\/li>\n<li>Add property listings with all required fields filled in<\/li>\n<li>Go to <strong>Hub Im\u00f3veis \u2192 Overview<\/strong> to check feed status<\/li>\n<li>Copy the feed URL and register it in the desired portal<\/li>\n<\/ol>\n\n<p><strong>Portal setup (ImovelWeb):<\/strong><\/p>\n\n<ol>\n<li>Log in to the ImovelWeb dashboard<\/li>\n<li>Go to <strong>Ad Integration \u2192 XML<\/strong><\/li>\n<li>Paste the feed URL<\/li>\n<li>In \"Integrator Name\", enter <strong>UQBITZ<\/strong><\/li>\n<li>Save<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20are%20the%20requirements%3F\"><h3>What are the requirements?<\/h3><\/dt>\n<dd><ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>PHP 8.0 or higher<\/li>\n<li>Advanced Custom Fields (free or Pro) installed and active<\/li>\n<\/ul><\/dd>\n<dt id=\"where%20do%20i%20find%20the%20feed%20url%3F\"><h3>Where do I find the feed URL?<\/h3><\/dt>\n<dd><p>Go to <strong>Hub Im\u00f3veis \u2192 Overview<\/strong> in the WordPress dashboard. The URL is displayed at the top, in the format: <code>https:\/\/yoursite.com\/wp-json\/uqbhi\/v1\/feed<\/code><\/p><\/dd>\n<dt id=\"why%20is%20a%20property%20not%20showing%20in%20the%20feed%3F\"><h3>Why is a property not showing in the feed?<\/h3><\/dt>\n<dd><p>Properties with incomplete required fields are automatically excluded. Go to <strong>Hub Im\u00f3veis \u2192 Overview<\/strong> to see the list of issues for each property.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20on%20multiple%20sites%3F\"><h3>Can I use this on multiple sites?<\/h3><\/dt>\n<dd><p>Yes. Each plugin installation generates its own independent feed. Just install, configure the agency code, and add properties.<\/p><\/dd>\n<dt id=\"how%20does%20the%20zip%20code%20auto-fill%20work%3F\"><h3>How does the ZIP code auto-fill work?<\/h3><\/dt>\n<dd><p>When you enter a ZIP code while editing a property, the plugin queries the ViaCEP API and automatically fills in street, neighborhood, city, and state.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20api%20key%20from%20the%20portal%3F\"><h3>Do I need an API key from the portal?<\/h3><\/dt>\n<dd><p>No. The XML feed is a public URL consumed by the portal. You only need the agency code provided by the portal.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.4.1<\/h4>\n\n<ul>\n<li>Changed: WordPress Coding Standards compliance \u2014 tabs, docblocks, brace style across all files<\/li>\n<\/ul>\n\n<h4>3.4.0<\/h4>\n\n<ul>\n<li>Refactor: Split single-file plugin (1881 lines) into 6 modular files under <code>includes\/<\/code> (SOLID\/KISS)<\/li>\n<li>Added: ACF field <code>complemento<\/code> now registered via code<\/li>\n<li>Fixed: Infrastructure field name casing (<code>Infraestrutura<\/code> \u2192 <code>infraestrutura<\/code>) \u2014 items were not loading in XML feed<\/li>\n<li>Changed: Admin code only loads on dashboard (<code>is_admin()<\/code>)<\/li>\n<\/ul>\n\n<h4>3.3.0<\/h4>\n\n<ul>\n<li>Changed: Uniform prefix <code>uqbhi_<\/code> for all functions, constants, options, CPT, and taxonomies<\/li>\n<li>Changed: CPT slug <code>imovel<\/code> \u2192 <code>uqbhi_imovel<\/code>; taxonomies <code>tipo<\/code> \u2192 <code>uqbhi_tipo<\/code>, <code>finalidade<\/code> \u2192 <code>uqbhi_finalidade<\/code>, <code>cidade-e-bairro<\/code> \u2192 <code>uqbhi_cidadebairro<\/code><\/li>\n<li>Changed: REST namespace <code>portalimoveis\/v1<\/code> \u2192 <code>uqbhi\/v1<\/code><\/li>\n<li>Fixed: Feed URL uses <code>rest_url()<\/code> instead of hardcoded <code>home_url('\/wp-json\/...')<\/code><\/li>\n<li>Fixed: All admin page slugs prefixed (<code>uqbhi-portal<\/code>, <code>uqbhi-settings<\/code>, <code>uqbhi-mapping<\/code>)<\/li>\n<\/ul>\n\n<h4>3.2.0<\/h4>\n\n<ul>\n<li>Fixed: HTML output escaping on all admin pages (esc_html, esc_attr, esc_url)<\/li>\n<li>Fixed: Input sanitization via register_setting() callback<\/li>\n<li>Fixed: readme.txt included in plugin folder<\/li>\n<li>Updated: WordPress Plugin Check compliant<\/li>\n<\/ul>\n\n<h4>3.1.0<\/h4>\n\n<ul>\n<li>Added: Expanded validation \u2014 IPTU, property age, condo fee (conditional), full address required<\/li>\n<li>Changed: Optimized layout \u2014 infrastructure, gallery, floor plans, video at full width<\/li>\n<li>Changed: Infrastructure checkbox layout set to horizontal<\/li>\n<li>Changed: \"Hub Im\u00f3veis\" menu repositioned below the Im\u00f3veis CPT<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>Added: Admin dashboard with 3 pages: Overview, Settings, Field Mapping<\/li>\n<li>Added: Required field validation in XML feed<\/li>\n<li>Changed: Plugin rebranded from client-specific to generic \"UQBITZ Hub de Integra\u00e7\u00e3o Imobili\u00e1ria\"<\/li>\n<li>Changed: REST API namespace changed to <code>portalimoveis\/v1<\/code><\/li>\n<\/ul>\n\n<h4>2.8.0<\/h4>\n\n<ul>\n<li>Added: YouTube video field with automatic code extraction<\/li>\n<li>Added: Floor plan gallery with custom titles<\/li>\n<\/ul>\n\n<h4>2.7.0<\/h4>\n\n<ul>\n<li>Added: IPTU, condo fee, and property age in XML characteristics<\/li>\n<li>Added: Amenity mapping to Navent AREA_PRIVATIVA IDs<\/li>\n<li>Added: Infrastructure mapping to Navent AREAS_COMUNS IDs<\/li>\n<\/ul>\n\n<h4>2.5.0<\/h4>\n\n<ul>\n<li>Added: 82 Navent characteristic mappings (numeric IDs to Portuguese labels)<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li>Added: CPT and taxonomies registered via plugin code<\/li>\n<li>Added: Complete type hierarchy (5 types, 40 subtypes)<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Initial release: single-file plugin rewrite with REST API XML feed<\/li>\n<\/ul>","raw_excerpt":"Generates an OpenNavent XML feed to sync WordPress property listings with real estate portals (ImovelWeb, Wimoveis, Casa Mineira).","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/295902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=295902"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/feperrella"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=295902"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=295902"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=295902"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=295902"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=295902"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=295902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}