Local SEO on WordPress: the five things the site must do, and how Yoast and Rank Math handle locations and schema
What a WordPress site adds to your Business Profile, how to set up location pages and LocalBusiness markup with or without a plugin, and the settings that quietly hurt local results.
Published by AI Knows Us · Updated 21 October 2026
Local SEO on WordPress is the website half of local search. Your Google Business Profile does most of the work for map results, and the WordPress site backs it up with five things: one clear page per location with the same name, address and phone number as the profile, LocalBusiness structured data on that page, service pages written for the area you serve, a contact page with a map and opening hours, and links from the profile to the matching page. Yoast and Rank Math both have local features that write the structured data and manage locations for you, and you can also add the markup by hand. A plugin saves time; it does not replace the profile, the reviews or the page content.
The plugin details below were read on the vendors' own pages, and the Google facts on Google's Business Profile help and Search Central documentation, all on 22 October 2026.
What the WordPress site can and cannot do for local rankings
Google's Business Profile help says local results are based mainly on "relevance, distance, and popularity," and that you cannot pay for a better local ranking. Distance is out of your hands. Relevance and popularity are where the site comes in: complete, consistent business details, pages that describe the services people search for, and links from other sites to yours.
So the site's job is not to "rank in the map" by itself. Its job is to confirm what the profile says, give Google and visitors a page that matches each location and service, and earn links and mentions. If you are starting from nothing, our full local SEO method covers the profile, reviews and citations. This page is about the WordPress side.
The five things to set up on a WordPress site
1. Name, address and phone, written once and shown everywhere
Decide the exact form of your business name, address and phone number, and match it to your Business Profile character for character. Show it on the contact page and in the footer. On WordPress, the safest way to keep it consistent is to enter it once, in a plugin's settings or a reusable block, and output it from there, so a change of phone number happens in one place.
2. A page for each location
A business with one site needs one strong contact or location page. A business with several sites needs one page per location, each with its own address, phone, hours, map and something genuinely local: the team, parking, the services offered at that branch. Both Yoast's and Rank Math's local features store locations as a custom post type, so each location becomes its own page with its own URL.
3. LocalBusiness structured data
Google's local business documentation says to "define each local business location as a LocalBusiness type" and to use "the most specific LocalBusiness sub-type possible," such as Restaurant or DaySpa. The required property is address. Name, phone, opening hours, geo coordinates and URL are worth adding. Google says the markup can go on any page, "though it may make more sense to put it on a page that contains information about your business."
4. Service pages for the area you serve
People search "emergency plumber in Leeds" or "dentist near Union Square", so the pages that win are about the service first and the place second. Write one page per main service, mention the areas you cover where it is true and useful, and link each service page to the location page. Avoid a page per town with only the town name changed. Those pages add nothing for a reader.
5. The link from your Business Profile
Point the website field on each Business Profile at that location's page, not always at the home page. The page a searcher lands on then matches the branch they clicked.
The plugin options, compared
Most WordPress sites already run Yoast SEO or Rank Math. Both have local features. This is what each vendor says, as read on 22 October 2026.
| Yoast Local SEO | Rank Math Local SEO module | |
|---|---|---|
| How you get it | Included in Yoast SEO Premium, Yoast WooCommerce SEO and Yoast SEO AI+ | A module inside Rank Math; multiple locations is marked as a PRO feature |
| Structured data | Converts your address and hours into schema automatically | Adds local business metadata from the module's settings |
| Multiple locations | Each location gets its own page with address, hours and map; a store finder is available | Locations stored in a custom post type, with settings for its URL base and labels |
| Business type | You choose a business type, from churches to zoos in Yoast's words | A Business Type setting for the home, about and contact pages |
| Extras | Google Maps embed, a geo sitemap and a KML file in the XML sitemap; integrates with WooCommerce local pickup | Opening hours settings and a contact info shortcode for showing your details on a page |
| Who it is built for | Yoast says businesses with a physical presence | Rank Math says to use it only on a local business website |
Yoast's page describes Yoast SEO AI+ as including AI brand monitoring and insights (read 22 October 2026), which puts Yoast in the AI visibility category as well as SEO. Prices for both are on the vendors' own sites. Check the current tier before you buy, because which plan includes which local feature is the detail most likely to change.
Rank Math's guide recommends having a verified Business Profile before you configure its local settings, which is a sensible order with either plugin.
Adding the markup without a local plugin
If you only have one location and do not want another paid tier, you can add the JSON-LD yourself on the contact page, through a code snippets plugin or your theme. A minimal example:
<script type="application/ld+json">
{ "@context": "https://schema.org", "@type": "Dentist", "name": "Example Dental", "url": "https://www.example.com/contact/", "telephone": "+1-555-010-0000", "address": { "@type": "PostalAddress", "streetAddress": "100 Main St", "addressLocality": "Springfield", "addressRegion": "IL", "postalCode": "62701", "addressCountry": "US" }, "openingHoursSpecification": [{ "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], "opens": "09:00", "closes": "17:00" }]
}
</script>
Two cautions. If your SEO plugin already outputs Organization or LocalBusiness markup, do not add a second block that says something different; use one source. And validate the live page with Google's Rich Results Test, then use URL Inspection in Search Console to see how Google reads it. Google's docs say the page must not be blocked by robots.txt, a noindex tag or a login.
WordPress details that quietly hurt local results
- Location pages set to noindex. A plugin setting or a template can switch indexing off for a whole post type. Check each location URL with URL Inspection in Search Console.
- Maps that load slowly. An embedded map on every page adds weight. Put it on the contact and location pages, not in the global footer.
- Two sources of schema. A theme, a page builder and an SEO plugin can each output business markup. View the page source and keep one.
- Old addresses. After a move, update the plugin settings, the footer, the Business Profile and any directory listings on the same day.
- Thin city pages. Twenty near-identical town pages built from one template add nothing for a reader. A few strong service pages do more.
If you would rather hand this to someone, our guide to hiring a WordPress SEO expert lists the checks to run before you sign.
Questions about local SEO on WordPress
Do I need a local SEO plugin on WordPress?
Not for one location. You can add LocalBusiness markup by hand and build a good contact page. A plugin earns its place when you manage several locations, want a store finder, or want the markup kept in sync without touching code.
Is Yoast Local SEO a separate plugin?
Yoast's page, read on 22 October 2026, says Local SEO is included in Yoast SEO Premium, Yoast WooCommerce SEO and Yoast SEO AI+.
Does Rank Math's free version do local SEO?
Rank Math's guide documents a Local SEO module and marks the multiple locations option as PRO. Check Rank Math's pricing page for what the free version includes today.
Which schema type should a local business use?
Google says to use the most specific LocalBusiness sub-type that fits, such as Dentist, Restaurant or Plumber, and lists address as the required property.
Will structured data get me into the map pack?
Google names relevance, distance and popularity as the main local factors. Structured data helps Google read your details correctly. The profile, reviews and content still do the heavy lifting.
When the local search happens in a chat
Some people now ask ChatGPT, Gemini or Perplexity "who should I call" instead of opening the map. Those assistants build an answer from the pages and listings they can read, and a WordPress site with clean location pages and consistent details is easier for them to quote correctly. Whether they actually name your business for your town and service is something you can check, and AI Knows Us checks exactly that for local businesses.