Skip to content
GPLWP Guides

How to create a real estate listings website in WordPress

Directories & Listings Time About 1–3 hours for a basic site 6 steps Updated 6 Sep 2026

DIRECTORIES & LISTINGS
The short answer

WordPress core can publish property pages, but it does not include a proper property post type, advanced filters, map search or listing inquiry workflow. You can assemble those parts with plugins and custom templates, or use a real estate theme that provides them together.

The route
  1. 01Plan the listing fields
  2. 02Build the manual listing system
  3. 03Create search and property pages
  4. 04Add maps and enquiry forms
  5. 05Prepare content and fix URLs
  6. 06Take the fast route with Realar

What you need

  • A self-hosted WordPress website with admin access
  • A domain and hosting account with SSL enabled
  • Property data, photographs and map locations
  • A plan for property types, locations, prices and listing status

Plan the listing fields

Decide what every property needs before you install anything. Typical fields include price, sale or rental status, property type, bedrooms, bathrooms, floor area, address, coordinates, featured image, gallery, description, amenities and an enquiry email or phone number.

Use taxonomies for repeatable groups such as property type, location and listing status. Use custom fields for values such as price, bedrooms and floor area. WordPress describes taxonomies as a way to group content, while custom post types are intended for distinct content such as products or other structured records.

Build the manual listing system

The manual route is to create a custom post type called something like Properties, add the fields and taxonomies, then create templates for the single property page and the property archive. Keep the property content in a plugin or a must-use plugin rather than only in the theme, because changing themes can otherwise make the post type disappear from the dashboard.

This route is fine for a small catalogue if you can code or are happy to configure several plugins. It becomes awkward when you need price ranges, location filters, map markers, agent submissions, favourites, virtual tours or automatic listing feeds. Those features require additional plugins or custom development rather than WordPress core alone.

Create search and property pages

Create a listings archive, a property detail template, and a search page. Add filters for location, property type, sale or rental status, price range, bedrooms and other fields that visitors actually use. Make sure each result links to a full property page with the main facts near the top and a clear enquiry action.

Do not assume that adding custom fields automatically creates front-end filters. The search component must be configured to query those fields and taxonomies, and the results template must display the matching records. If the search page returns no results, check the field names, taxonomy assignments, query settings and cache before changing the design.

Add maps and enquiry forms

Add a map to the archive or individual property pages, but decide whether you need exact addresses shown publicly. For privacy, many agencies show an approximate location or neighbourhood instead of a precise pin. A Google Maps implementation needs an API key, billing enabled for production use and suitable restrictions; an unrestricted or incorrectly restricted key is a common reason for blank or watermarked maps.

Add an enquiry form with property reference, visitor name, email, telephone and message. Send a test enquiry and confirm delivery, spam protection and a usable reply address. Contact forms can appear to work while mail is rejected by the server, so check the recipient inbox, spam folder and mail logs before launch.

Prepare content and fix URLs

Add a small batch of real listings before styling the homepage. Give every property a featured image, a consistent title, a complete description, readable price formatting and useful alternative text for important images. WordPress stores image details such as alt text in the Media Library, where they can be reused when the image is inserted elsewhere.

Set a readable permalink structure, then visit Settings > Permalinks and save the settings after registering a new post type or changing rewrite settings. Regenerating rewrite rules is a frequent fix for property archives or individual listings returning 404 errors.

Take the fast route with Realar

For a quicker build, install and activate Realar, then use its setup options and demo import rather than assembling the listing structure yourself. Upload the theme ZIP from Appearance > Themes, activate it, and configure the property listings, search, map, virtual tour and enquiry features supplied by the theme. WordPress supports installing a theme from a ZIP upload through the Themes administration screen.

Replace the demo properties with your own records, connect the map service if the theme requires an API key, check the search filters on a phone, and send several test enquiries. Realar is the faster choice when you want a property-focused design with listings, map search, virtual tours and enquiry forms in one starting point; the manual route is better when you need a highly customised data model or plan to change themes later.

The fast route

Let Realar do it

Property-focused theme with listings, map search, virtual tours, and inquiry forms for building a real estate website quickly.

Get Realar

Sources

  1. wordpress.org /documentation/article/taxonomies/?utm_source=openai
  2. developer.wordpress.org /reference/functions/register_post_type/?utm_source=openai
  3. developers.google.com /maps/documentation/javascript/get-api-key?utm_source=openai
  4. wordpress.org /documentation/article/image-block/?utm_source=openai
  5. developer.wordpress.org /reference/functions/add_rewrite_rule/?utm_source=openai
  6. wordpress.org /documentation/article/work-with-themes/?utm_source=openai
  7. wordpress.org /documentation/article/what-is-post-type/?utm_source=openai

Questions

Can WordPress create property listings without a plugin?
WordPress can publish individual property pages using posts or pages, but it does not provide a dedicated property content type, advanced listing filters, map search or enquiry workflow by default. You can build those features with custom code, fields and templates, but that is development work. For most sites, use a listing plugin or a real estate theme instead.
Should property listings be posts or a custom post type?
Property listings should normally use a custom post type because they have different fields, archives and templates from blog posts. You can then organise them with taxonomies such as location, property type and status. Keep the custom post type in a plugin rather than only in the theme so the listings remain available if you change the site design.
Why is my real estate search returning no properties?
A real estate search usually returns no properties when listings lack the required taxonomy terms or custom-field values, the filter is querying the wrong field, or the search template is not using the listing post type. Check one known property against every filter, clear caching, confirm the result page is correct, and then inspect the plugin or theme search settings.
Why is the map blank or showing a development warning?
A map is commonly blank or watermarked when the API key is missing, billing is not enabled, the required Maps service is disabled, or the key restriction does not match a browser-based website. Create or check the key in the relevant Google Cloud project, use website restrictions for browser requests, and inspect the browser console for the exact API error.
How should I protect a property owner's exact address?
Protect an owner's exact address by showing only the neighbourhood, an approximate map pin or a manually chosen location unless the owner has agreed to publish the full address. Store the precise address only where the agent needs it for internal use, and check that map markers, structured data, image metadata and downloadable brochures do not reveal more than intended.