

The search cascades through country, region and city, then narrows by category, type, beds, baths and price.
Your properties deserve better than a blog with photographs. FW Real Estate turns WordPress into a property site. You’ll get a home page that presents your listings, list and grid listing pages, an advanced search a visitor can actually use, and detail pages with galleries and full specifications.
See it running: https://realestatewordpress.fastw3b.com/ (that demo has the full add-on range enabled, so it shows more than this plugin installs).
There’s nothing to buy first, no account needed, and nothing gets downloaded after you install it.
A rental property carries its own lease terms, payment periods and pricing, so lettings sit beside sales without a second plugin. A property can hold a video. A 3D panorama tour opens in the gallery. All three are in this download.
Add the listing shortcode to any page:
[fw_real_estate layout="grid" limit="12"]
and the detail shortcode (or ?fwre_view=item&fwre_id=ID):
[fw_real_estate type="item"]
The native blocks are in the inserter too, so you never have to type a shortcode.
Underneath is a real estate engine that has powered production property sites for years, integrated natively into WordPress. You aren’t installing version 1 of anything, and it doesn’t feel bolted on.
When one site becomes an agency, add-ons take it there. Two of them lead the range:
The rest of the range covers maps, favourites, saved searches, comparison, status labels, an enquiry form, open houses, multi-currency, image watermarks and brochure PDFs. There’s also a front-office manager, which lets agents post and edit properties without ever opening wp-admin.
Add-ons need a paid subscription and arrive as their own WordPress plugin, which you install like any other one. None of them is in this download, and this plugin never downloads code. The FAQ below explains exactly how that works.
The plugin works without any of these. Each is inert until a site administrator turns it on or enters their own key, and none of them is contacted on a fresh install.
Fastw3b update and licence service – https://fastw3b.com
What it is for: registering this site against a subscription and listing the add-ons it covers.
When it is contacted: only from the plugin’s own admin screens, on an administrator’s action: connecting or verifying the site, and opening the Add-ons or Updates screen. Never from the front end, never on a schedule, and never on a fresh install before the administrator connects.
What is sent: the site URL, the licence key, the plugin and WordPress versions, the platform name, and the list of FW Real Estate add-ons installed, so the service can answer which of them the subscription covers and whether newer versions exist. Nothing is downloaded from it: translations for this plugin come from translate.wordpress.org as WordPress language packs.
Terms: https://fastw3b.com/terms · Privacy policy: https://fastw3b.com/privacy
Google reCAPTCHA – https://www.google.com/recaptcha
What it is for: spam protection on the enquiry and review forms, if the administrator enables it and supplies a site key and secret. Off by default.
When it is contacted: on any page that renders a protected form (the visitor’s browser loads api.js), and on submission, when this site asks api/siteverify whether the answer was valid.
What is sent: the visitor’s reCAPTCHA token and this site’s IP address.
Terms: https://policies.google.com/terms – Privacy policy: https://policies.google.com/privacy
Map providers – Google Maps at https://maps.googleapis.com or Mapbox at https://api.mapbox.com
What it is for: drawing the property map and geocoding an address. The administrator chooses the provider and supplies their own API key; with no key, no map is rendered and nothing is requested.
When it is contacted: when a page showing a map is displayed in a visitor’s browser. The provider’s own map library is loaded from the provider, with that key, as both providers require.
What is sent: the coordinates or address being displayed, and the administrator’s API key.
Google: https://cloud.google.com/maps-platform/terms and https://policies.google.com/privacy
Mapbox: https://www.mapbox.com/legal/tos and https://www.mapbox.com/legal/privacy
YouTube and Vimeo – https://www.youtube.com and https://player.vimeo.com
What it is for: playing a property video, when the property’s own record names one.
When it is contacted: only after the visitor clicks the video poster, which then embeds the player.
What is sent: the video id, and whatever the embedded player itself collects.
YouTube: https://www.youtube.com/t/terms and https://policies.google.com/privacy
Vimeo: https://vimeo.com/terms and https://vimeo.com/privacy
All of these ship inside the plugin and are loaded from it – the plugin never fetches code from a CDN. Each is GPL-compatible, and the readable upstream source sits beside the minified build it was made from, in the same directory:
assets/js/fw-uikit-3.25.21.min.js + fw-uikit-3.25.21.js, assets/js/fw-uikit-icons-3.25.21.min.js + fw-uikit-icons-3.25.21.js, assets/css/fw-uikit-3.25.21.min.css + fw-uikit-3.25.21.css. This is the upstream 3.25.21 release with the CSS class prefix changed from uk- to fwk-, so the framework cannot collide with a theme or another plugin shipping stock UIkit. A custom prefix is a supported UIkit configuration and is documented by the project at https://getuikit.com/docs/avoiding-conflicts#custom-prefix – its own pnpm prefix script performs the same substitution over the published dist, and renames the global object the same way (fwkUIkit). The readable and the minified file are upstream’s own pair with that one rename applied to both, so they are the same program; scripts/vendor/build-fw-uikit.sh in our repository regenerates all six files from the published upstream release.assets/js/lightgallery.min.js + lightgallery.js, lg-zoom.min.js + lg-zoom.js, lg-fullscreen.min.js + lg-fullscreen.js, assets/css/lightgallery.min.css + lightgallery.css.assets/js/ion.rangeSlider.min.js + ion.rangeSlider.js, assets/css/ion.rangeSlider.css. 2.3.1 is the project’s final release; it is no longer developed, so this is what its latest stable is.assets/js/pannellum.min.js, with the upstream sources pannellum.js and libpannellum.js beside it and assets/css/pannellum.min.css + pannellum.css. Loaded from the plugin the first time a visitor opens a 3D tour.assets/js/pikaday.js, assets/css/pikaday.css. The date pickers on the availability and booking fields. Only the readable build ships; there is no minified copy to pair it with.addons/designs/official/assets/js/demo-icons.js. Not the font: the individual SVG paths for the icons this plugin’s screens use, registered with the icon framework so a screen names an icon rather than embedding a drawing. No icon font is loaded and no request leaves the visitor’s browser for one.assets/js/markerclusterer.min.js + markerclusterer.js. Both files are published by the project itself in that release: the minified one is its dist/index.umd.js and the readable one its dist/index.dev.js, the same program built without minification. Loaded only on a map that clusters pins.Two typefaces ship as well, both under the SIL Open Font License 1.1 and both served from the plugin rather than from a font service – no request leaves the visitor’s browser for a third party, and no visitor’s IP address reaches one:
assets/fonts/fwre-poppins-{300,400,500,700}-{latin,latin-ext}.woff2, eight files.assets/fonts/fwre-inter-{cyrillic,greek}.woff2, two files, carrying the Cyrillic and Greek that Poppins does not.Both are the publisher’s own woff2 subsets, redistributed unmodified; only the file names carry this plugin’s prefix. Each @font-face declares a unicode-range, so a browser fetches only the files a page actually needs. The family names declared in CSS are prefixed too – FWRE Poppins, FWRE Inter – because font-family is a global name: an unprefixed one would MERGE with a theme’s own declaration of the same family rather than override it or be overridden, and the browser would then pick between the two sets of files on its own.
scripts/vendor/ in our repository regenerates every file above from the published upstream release, and each script records which release it fetched and how.
jQuery is NOT bundled: the plugin uses the copy that ships with WordPress.