Category: Explainers

  • WordPress tags vs categories and when to use each

    Key takeaways

    • Only categories can have parent and child terms. Every post ends up in at least one category, because WordPress files it under the default category (set in Settings > Writing) if you pick none.
    • A tag is worth creating only if it will be used on several posts across different categories. A tag used on one post creates an archive page with almost nothing on it.
    • Google has no rule about indexing category or tag pages. Judge each archive on whether it’s useful, and use noindex to keep it out of results. Blocking it in robots.txt doesn’t do that.
    • Deleting a category never deletes its posts. WordPress moves them to the default category, but the old archive URL still needs a redirect.
    • In WooCommerce, use product categories for departments, product tags for labels that span departments, and attributes for anything shoppers filter by.

    Most WordPress sites don’t get a messy taxonomy all at once. It happens one post at a time. Someone adds a tag for a word that appears in an article, then another, and a few years later the site has hundreds of tags used once and a category list nobody can scan. WordPress never shows an error, so nobody notices until an SEO audit or a Search Console report turns up a long list of nearly empty archive pages.

    The difference between the two is simple. Categories are your site’s main sections. Tags are optional labels that connect posts across those sections. The difficult part is that every term you create also becomes a page, and that is what this article covers. It sits alongside our step-by-step guide to doing SEO on WordPress.

    What actually separates a category from a tag

    Categories can be hierarchical and tags can’t. WordPress’s Theme Handbook describes both as taxonomies, which are ways of grouping posts, but only categories can have parent and child terms. Everything else follows from that one structural difference.

    CategoriesTags
    StructureHierarchical: a parent such as Services with children such as Design and MaintenanceFlat, no parents
    RequiredEffectively yes: a post with no category goes into the default categoryNo, entirely optional
    JobSays where a post belongsSays what else the post is about
    In the block editorA checkbox list, which encourages picking an existing termA text field, which makes a new term one keystroke away
    Archive URL (default)/category/services/design//tag/gluten-free/
    Healthy numberA short list that rarely changesGrows slowly, and each tag is used on many posts

    That editor row explains a lot of messy sites. Picking from a category list nudges you to reuse what’s already there. Typing in a tag field makes it just as easy to create a new tag as to reuse an old one, so you end up with “email”, “emails” and “email marketing” as three separate archives.

    Learn WordPress compares categories to a book’s table of contents and tags to its index. That comparison works. The table of contents has a few entries and every chapter is in it. The index is long, specific, and each entry is worth having only because it points to more than one page.

    When a subject should be a category, and when a tag

    Use a category when the subject is a permanent section of the site that a visitor might browse on purpose, the kind of thing you would put in a menu. Use a tag when the subject keeps coming up across several sections and a reader of one of those posts would want the others.

    Take a bakery that publishes recipes and business news. “Recipes” and “News” are categories. “Gluten free” is a good tag, because it connects a bread recipe with the announcement of a gluten-free range. Readers can follow their dietary need across both sections. A tag for this spring’s sale is a bad one: nothing will be added to it, so anyone who clicks it reaches a dead end.

    Before you create a term, run these checks:

    • Will it be used on several posts? If not, leave it out. Single-use tags are the clearest sign of a taxonomy going wrong.
    • Does it already exist under another spelling? Search Posts > Tags for singular, plural and synonym forms first.
    • Does it repeat a category? WordPress.com’s support guide advises against giving a category and a tag the same name. You would just get two archives listing the same posts.
    • Is it a format, not a subject? “Tips” and “guide” describe the kind of article. They don’t tell a reader what it’s about.

    WordPress allows more than one category per post, but one is the sensible default. A post filed under four categories has no clear home, and every archive it appears in gets a little less distinct. Use child categories when a real hierarchy exists, not to squeeze in extra labels.

    Tags are not keywords. Agency developers on r/Wordpress keep describing the same pattern: clients treat the tag box like the old meta keywords field and type in every phrase they want to rank for. One 2014 thread mentions a site with 20,000 tags. No ranking benefit comes from the label itself. Any benefit comes from the archive page being worth visiting.

    Why every new tag is also a new page

    WordPress creates an archive page for every category and tag, listing the posts assigned to it. That turns a filing decision into a navigation decision and a search decision. A tag on one post creates a page that only repeats that post’s excerpt. A site with 400 of those has 400 thin pages that crawlers can find.

    Think of each archive as a page you are recommending to visitors. Would you link to it from the sidebar of a good article? If yes, it’s earning its place. If you would be embarrassed to link it, the tag probably shouldn’t exist.

    The archive is also separate from your real landing pages. A Design service page explains and sells the service. A Design category archive is a date-ordered list of posts. Don’t let the archive replace the service page in your menu just because they share a word. If you want tag and category archives to connect visitors to your best pages, our guide to adding internal links in WordPress covers the editor side.

    Should category and tag archives appear in Google?

    Decide archive by archive. Don’t decide by taxonomy type. Google publishes no rule about WordPress categories or tags. Yoast’s settings documentation points out that useful taxonomy pages can bring in visitors. A common rule of thumb in practitioner forums is to noindex all tags and index all categories. That’s a reasonable starting point, but it’s a heuristic. Google doesn’t require it.

    Keep an archive indexable when it’s distinct and useful: it has enough posts to browse, a clear heading and, ideally, a short introduction in the term description. Keep it out of search results when it’s thin, empty or an exact overlap with another archive. In Yoast SEO, go to Yoast SEO > Settings > Categories & tags, choose the taxonomy, turn off its search visibility and save. Yoast also lets you noindex individual terms, so you can keep a strong tag archive indexed and drop the weak ones.

    Use the right tool to keep a page out of Google:

    • noindex keeps a page out of search results. Google’s documentation says the page must stay crawlable, because Google has to load the page to see the noindex instruction.
    • robots.txt controls crawling, not indexing. Blocking /tag/ there can leave URLs showing in results and hides your noindex from Google.
    • Redirects or rel=”canonical” are how Google says to merge duplicates. Its canonicalization guide says Google picks a canonical URL when a site has duplicate content, and it lists redirects and canonical tags as the ways to tell it which one you prefer.

    Check your settings before you write copy for archives. On r/woocommerce, one store owner wrote unique text for their tag pages and only later found they had set tag archives to noindex in Yoast. If you suspect tag pages are competing with your main pages, use Search Console’s Performance report: filter to the tag URLs and see which queries they share with your posts before you decide anything.

    If you would rather have someone else make the archive indexing changes, write the redirects and check the result, SiteSelf does that kind of SEO settings and redirect work on request through chat.

    How to clean up a messy taxonomy without breaking links

    Audit first and delete last. Renaming a term’s slug or deleting a term changes or removes an archive URL. Bookmarks, backlinks and Google’s index still point at the old address. Take a backup before you start.

    1. Export the lists. In Posts > Categories and Posts > Tags, record each term’s name, slug and post count.
    2. Flag the suspects. These are single-use tags, near-duplicates, and tags that copy a category. A low count is a reason to look closer. It doesn’t automatically mean delete.
    3. Decide each one. Keep it, merge it into another term, promote it to a category, convert it, or retire it.
    4. Merge or convert in bulk. WordPress’s Categories and Tags Converter (Tools > Import) converts selected terms from one taxonomy to the other. The free Term Management Tools plugin adds Merge, Set Parent and Change Taxonomy to the bulk actions on the term screens.
    5. Redirect what moved. Send each retired archive URL to its closest replacement with a 301. Don’t send unrelated archives to the homepage. See how a 301 redirect affects SEO for the details.
    6. Fix dependencies. Update menus, links inside posts, and any block or template query that names the old term.
    7. Test. Load old and new archive URLs while logged out, then watch Search Console for new 404s.

    Deleting categories needs one extra check. WordPress’s documentation says deleting a category doesn’t delete its posts. It moves them to the default category, which itself can’t be deleted. So set a sensible default in Settings > Writing first. Otherwise the cleanup quietly fills “Uncategorized”.

    A cleanup only lasts if there’s a rule behind it. Practitioners who train clients report that verbal training doesn’t stick. A written one-page policy does better: the approved category list, what each one covers, and “search before you create a tag”. Some agencies go further and turn off tags for clients who keep misusing them.

    How WooCommerce product tags differ

    WooCommerce has separate taxonomies for products and doesn’t use the post categories and tags. Its documentation describes three tools. Product categories are hierarchical departments such as Dresses or Shoes. Product tags are flat labels that cut across departments, such as “summer” or “gift idea”. Attributes are properties like size, colour or material, which shoppers filter by and which drive variations.

    The common mistakes are using tags as main departments and using tags for business logic. A tag can say “Tuesday delivery”, but it won’t enforce a delivery day or an order cutoff. That needs a plugin built for it. Normally a product keeps a single URL however many categories it has, unless your product permalink base includes the category.

    Frequently asked questions

    Can tags have a hierarchy?

    No. Only categories support parent and child terms. If you need nested subjects, use child categories. If the built-in pair doesn’t fit, as with recipes grouped by meal and by dietary need, register a custom taxonomy for each grouping.

    Do I have to use tags at all?

    No. Tags are optional, and plenty of well-run sites use categories only. Use tags if you’ll apply them consistently across sections and show them to readers. Otherwise they only add archives.

    Do tags help SEO?

    Not by themselves. The label carries no ranking value. A tag archive can bring in visitors if it’s a useful collection with real content, and a thin one only gives crawlers more pages to process.

    Why can’t I see the category and tag boxes in the editor?

    In the block editor they’re in the right-hand sidebar under the Post tab, often in collapsed panels. Check the editor’s Preferences to make sure the panels are enabled. If they’re still missing with a default theme and no plugins active, the install itself may be modified, which is worth raising with your host.

    Can I change the slug of a category without losing traffic?

    Yes, if you add a 301 redirect from the old archive URL to the new one when you make the change. Changing only the display name leaves the URL alone. Our guide to what a WordPress slug is covers where to edit each one.

    Can Pages have categories and tags?

    Not by default. Categories and tags apply to posts. A plugin or a few lines of code can add them to Pages, but first ask whether a page hierarchy (parent and child pages) already does the job.

  • Chatbot vs live chat on a WordPress site

    Key takeaways

    • In Comm100’s 2025 benchmark, chatbots handled 73.8% of chats in 2024 but resolved only 45.8%. The resolved share barely moved from the year before.
    • Handing a chat from the bot to a person is a setting, usually with separate options for staffed and offline hours. Turning on AI does not mean a person sees the questions the bot could not answer.
    • The WooCommerce AI Assistant is an admin tool that shoppers never see. The storefront chatbot is a separate product, the AI Support Assistant.
    • When a widget shows for the admin but not for visitors, the usual causes are cache and JavaScript delay or defer settings. Check those before the theme or the host.

    Most small sites that add a chat widget find out within a month what they actually needed. Either the same five questions come in every day, or every question is different and needs someone who knows the business. A chatbot is good at the first case and live chat is good at the second. Neither one works if nobody looks after it.

    So the useful question is not which one is better. It is which requests software can answer safely, who answers the rest, and how fast that person can take over. Sometimes the honest answer is that visitors only need a reliable way to reach you. In that case a contact form in WordPress may do more than either kind of chat.

    What actually separates a chatbot from live chat

    With a chatbot, software writes the replies. With live chat, a person types back in real time, usually from a dashboard or a phone app. Most of the confusion comes from treating “chatbot” as one thing, because there are two very different kinds.

    A scripted bot follows a decision tree: buttons, fixed questions and fixed answers. It cannot go off script, which makes it predictable and limited. An AI bot writes its own answers, ideally from a knowledge base made of your pages, posts, products and FAQs. It can handle questions nobody planned for. That is its strength and its risk, because it can also answer confidently when it has no idea.

    Many WordPress chat plugins now sell both modes in one widget: a bot that answers first and a person behind it. That setup is called hybrid, and it is the pattern most practitioners recommend. There is also a third pattern that often gets counted as live chat. Contact-button launchers show floating icons that open WhatsApp, Messenger or a phone call. That is a shortcut to another channel, not a chat service.

    Before you install anything, check where the conversations live. Many plugins sold as “WordPress chatbots” just place a widget for an external service. The conversations, training and settings sit on the vendor’s servers, not in your WordPress database.

    WooCommerce stores have one more trap. WooCommerce’s documentation describes the AI Assistant as an admin tool that does not appear on the storefront. The customer-facing chatbot is the separate AI Support Assistant. You have to enable it and give it an AI provider, a knowledge base and product information.

    Which questions belong to a bot and which to a person

    Decide by request, not by product. Bots do well with routine, documented, low-stakes questions that come up again and again. People are needed when the answer takes judgment, depends on a specific account, involves money, or comes from someone who is upset.

    RequestBetter first responderWhy
    Opening hours, shipping policy, returns windowBotThe answer is already written on your site
    Order status lookupBot, if it can read ordersOne fact, a clear finish, no judgment
    Inquiry outside business hoursBot that collects name, contact and job detailsNobody is there to answer, but the lead is still worth keeping
    “Will this work for my situation?”Bot first, person on buying intentPricing and fit questions are where sales are won or lost
    Refund, wrong charge, complaintPersonNeeds account access, a decision and a believable apology
    Anything the bot answered wrong once alreadyPersonA second guess costs more than a short wait

    Practitioners on Reddit and wordpress.org agree on one point: the setup most likely to disappoint is a bot that is supposed to replace people completely. It goes wrong as soon as a visitor has a real problem with an order or an account.

    Bots handle more chats than they resolve

    The Comm100 Live Chat Benchmark Report 2025 looked at accounts that use AI chatbots. In those accounts, bots handled 62.7% of chats in 2023 and 73.8% in 2024. The share the bots actually resolved stayed flat: 46.0%, then 45.8%.

    That gap matters more than any other statistic in this debate. Vendors usually advertise “handled” or “deflection” figures. A bot can take part in three quarters of conversations and still finish fewer than half. The rest either reach a person or end without an answer. Keep the source in mind, though. Comm100 sells chat software, and its data comes from its own customers, who mostly run staffed support teams rather than one-person WordPress sites.

    Why customer preference surveys seem to disagree

    The surveys measure different things, so they are not really in conflict. Salesforce’s State of the AI Connected Customer research, a YouGov survey of 15,015 consumers in 2024, found that 30% would use an AI agent instead of a person to get faster service, and 35% would do so to avoid repeating themselves. Tidio’s 2025 study of 1,300 people, Helpful or Hopeless?, found that about 30% would still wait for a human even with a bot available right away, and more than 11% would pay extra to skip the bot.

    Both are vendor studies, and Tidio recruited its respondents through Amazon Mechanical Turk and Hotjar, which is a weaker sample. The practical lesson is the same either way: preference depends on the task and the wait. Someone checking a delivery date wants speed. Someone who was charged twice wants a person.

    Handoff only happens if someone configured it

    Turning on AI in a chat tool does not mean a person will see the questions the bot could not answer. In hybrid tools, what happens after a failed answer is a setting. The usual options are to transfer the chat to an agent, keep it with the bot, or turn it into a ticket or email. Offline hours often have their own setting. Check both, because the defaults may not match what you assume.

    A bot that runs overnight does not solve problems overnight. At best, it collects the details so someone can reply in the morning. Tell the visitor that plainly, and give a time they can expect a reply.

    A good handoff has four parts:

    • The bot says it does not know instead of guessing.
    • The conversation carries over, so the visitor does not have to explain twice.
    • The “talk to a person” option is visible from the start, not hidden behind three failed answers.
    • Pricing questions and clear buying intent go to a person.

    A fallback line can be as simple as: “I can’t sort out a billing problem here. I’ve saved your question and order number, and someone will reply by email by 10 a.m. tomorrow.”

    What chat costs is mostly staff time

    Chat tools charge in several different ways, so comparing price tags directly tells you little:

    • Per agent seat each month. The bill grows with your team.
    • Bundles of conversations. The bill grows with your traffic, including spikes you did not plan for.
    • Free core with a paid AI add-on.
    • A plugin licence plus your own AI API key. The model provider bills you separately for usage.

    The bigger cost is people. Live chat needs someone covering the hours the widget promises. A bot needs someone to write, check and update the content it answers from, and to read the conversations where it went wrong. None of the research behind this article compares the total cost of the two. “Bots are cheaper” is an assumption, not a finding.

    Where chat goes wrong after it is installed

    Live chat that nobody answers

    Practitioners say this is worse than having no chat. It tells visitors nobody is there, and you lose the lead. If you cannot cover normal business hours, even shared between a few people, hide the widget when you are offline or switch to a form.

    A bot that guesses or loops

    The common complaints are bots that guess, send the wrong help article, or keep asking “Did that solve it?” Train the bot only on content you control, set clear limits on what it answers, and judge it by conversations resolved, not conversations handled. A commenter in r/woocommerce warned that a bot that cannot find the right answer in your content is more frustrating than a slow reply.

    Too few chats to matter

    Small-business threads on Reddit argue both ways. Some site owners report almost no chats after months. Others say a simple capture flow brought in evening and weekend inquiries they would have missed. The deciding factors are traffic, how often the same question comes back, and whether a short flow is enough. Long flows lose people.

    More leads, worse leads

    Agencies report that bots can bring in more leads than forms, but more of them are unqualified and take time to sort through. One or two qualifying questions based on what your business actually does will filter better than an open text box.

    Widgets that get in the way

    Google’s guidance on interstitials and dialogs recommends banners over large dialogs, so do not auto-open a full-screen chat. Google renders JavaScript and indexes the rendered HTML. An answer that exists only inside a chat conversation is not page content, so keep the important answers on the page as well. For accessibility, WCAG 2.2’s Focus Not Obscured criterion says an open chat window must not completely hide the control that has keyboard focus. W3C’s suggested fixes are to let content reflow, place the window in unused space, or let Escape close it.

    Why the widget shows for you but not for visitors

    Usually the cause is caching or JavaScript optimization. Logged-in admins normally skip the page cache, so you see the widget while visitors get an older copy of the page, or a script that loads in the wrong order. An MxChat thread on wordpress.org started exactly like this: the bot appeared for the admin but not for normal visitors. Work through these checks in order:

    1. Connection. Confirm the plugin is active and the account or site ID is saved. Use one install method only, either the plugin or pasted code, never both.
    2. Display rules. Check desktop and mobile settings, page exclusions, and any option that hides the widget when no agent is online.
    3. A clean test. Open a new private window, not one that was already open, and load the page logged out.
    4. Each cache layer. Purge the caching plugin, then the host’s server cache, then the CDN. On some hosts, the server purge does not clear the CDN. Why a page is not updating walks through each layer.
    5. Script optimization. Turn off delay and defer JavaScript for a moment. If the widget comes back, turn the options on again one at a time, exclude the chat script from the one that breaks it, and update the chat plugin. Do not leave all optimization off for good.
    6. The theme. The theme must call wp_footer() before </body>. That is how WordPress prints footer scripts, and many widgets rely on it. A console error like e(...).live is not a function means outdated jQuery code. Updating the theme fixes that. Reinstalling the chat plugin does not.
    7. Conflicts. The Health Check plugin’s Troubleshooting Mode turns off plugins and switches the theme only for your logged-in session, so visitors to a live store are not affected.
    8. Content Security Policy. If the site sends a CSP header, add the chat vendor’s domains to script-src and frame-src. Do not remove the policy.
    9. Works on staging, missing on live. Compare the page source on both, then ask the host about differences in PHP settings.

    If none of that finds it, the broader guide to WordPress plugins that are not working covers debug logs and conflict testing. If you would rather hand the problem off, SiteSelf’s WordPress bug-fix work traces it on your live site and reports what it changed. Plugin settings work through the connector plugin. Theme and script fixes need hosting access.

    How to decide for your own site

    Start with last month’s questions, from your inbox, phone notes and form entries. Sort them into routine and judgment calls. Then name who can answer, and during which hours.

    If you are unsure, have a person handle chat for a few hours a day before building a bot. You will learn what visitors actually ask, and that becomes the bot’s first knowledge base. Automate only the questions that keep coming back and already have written answers. Set up handoff for both staffed and offline hours. Then, for the first few weeks, read the conversations the bot did not resolve. Those tell you what to add to your content, and which questions should go straight to a person.

    Frequently asked questions

    Can a chatbot replace live chat completely?

    Not reliably. Billing disputes, account-specific problems, exceptions and upset customers need a person. Comm100’s figures show bots resolving under half of what they handle. A bot with a clear route to a person is the realistic setup.

    Will a chat widget slow down my WordPress site?

    It adds third-party JavaScript, so it can. There is no current, independent benchmark comparing widgets, and older forum reports no longer describe how vendors load their scripts today. Test your own pages in PageSpeed Insights with the widget on and off.

    Does a chat widget hurt SEO?

    Not by itself. The risks are narrower. Content that exists only inside chat is not indexed as page content, and auto-opening dialogs that cover the page go against Google’s guidance on intrusive dialogs. Keep answers on the page and let visitors open the chat themselves.

    Should I use the plugin or paste the vendor’s code?

    Either works, but never both. Running the plugin and pasted code at once loads the widget twice and causes display problems. The plugin is easier to remove later. Pasted code depends on the theme calling wp_footer(), or on a code snippets plugin that adds it for you.

    Why don’t shoppers see the WooCommerce AI Assistant?

    It is built for store admins and does not appear on the storefront. The customer-facing option is the AI Support Assistant. You enable it separately and configure it with an AI provider, a knowledge base and product information.

    Is chat worth it on a low-traffic site?

    Sometimes not. If visitors send a handful of different questions a month, a clear FAQ, a contact form and a visible phone number may serve them better. Chat pays off when the same questions keep coming back, or when after-hours inquiries would otherwise be lost.

  • WordPress maintenance mode plugins and when to use one

    Key takeaways

    • “Briefly unavailable for scheduled maintenance” comes from a .maintenance file that a WordPress update creates. Deleting that file takes the screen down, but the update still isn’t finished.
    • Most reports of a plugin “not working” turn out to be caching or a logged-in bypass. Purge every cache layer, then test in a private window.
    • Google Search Central recommends a 503 status with Retry-After only when a site is fully down for one or two days. For longer closures, keep the site up and turn off functions such as the cart.
    • On a store, a simple on/off plugin is enough for an update window. Builder plugins only make sense when the holding page has a marketing job.
    • WooCommerce’s update guide puts the live store in Coming Soon mode during updates and keeps checkout closed until store workflows have been tested.

    Most people searching for a maintenance mode plugin want one of two things. Some want a holding page up while they change something. Others want to get rid of a maintenance screen they never turned on. These are different problems, and WordPress uses a different mechanism for each.

    Start by working out which one you have. The rest of this page covers choosing the right kind of plugin, checking that it tells search engines the right thing, and knowing when maintenance mode is the wrong tool.

    What does a maintenance mode plugin do that WordPress doesn’t?

    A plugin gives you a holding page you control, and it stays up until you switch it off. WordPress core only has a maintenance state tied to updates. When you update core, a plugin or a theme, WordPress writes a hidden file called .maintenance to the site root. Visitors then see “Briefly unavailable for scheduled maintenance. Check back in a minute.” The updater normally deletes the file when the update ends.

    A plugin’s maintenance mode is a saved setting. LightStart’s documentation says its mode is switched on and off manually in the plugin settings. Other plugins work the same way. As a result:

    • Deleting .maintenance does not turn off a plugin’s mode.
    • Switching a plugin off does not fix a failed update.
    • WP-CLI’s wp maintenance-mode activate, deactivate and status commands control core’s maintenance mode, not a plugin’s setting.

    You can usually tell them apart by eye. Core shows one plain line of text. A plugin shows a designed page with its own heading, a logo, and sometimes a countdown or a signup form. The 503 response code explained article has a table of which screen comes from which source.

    Why is my site stuck if I never installed a maintenance plugin?

    An update was interrupted before WordPress could delete .maintenance. Common causes include closing the browser tab, a timeout, low memory or disk space, wrong file permissions, and updating many plugins at once. Kinsta’s documentation lists bulk updates as a risk.

    WordPress’s Advanced Administration Handbook gives the fix. First, make sure no update is still running. Then delete .maintenance from the folder that holds wp-config.php, which is often public_html. You can do this with your host’s file manager or over SFTP. The file name starts with a dot, so you may need to turn on “show hidden files.”

    Deleting the file only takes the screen down. Your plugin or core files may still be half-updated. Go to Dashboard, then Updates, and run whatever didn’t finish, one item at a time. Our guide to fixing a failed WordPress update covers what to do if the update fails again.

    Core treats the file as expired once its timestamp is ten minutes old, according to the wp_is_maintenance_mode() reference. So if the screen lasts for hours, the file may not be the only cause. Common culprits are a cached copy of the 503 page, a site broken by the half-finished update, or a plugin’s own screen.

    If the site keeps getting stuck, another plugin may be interfering with the updater. In one WordPress.org support thread, updates stalled again and again, and clearing caches didn’t help. A moderator traced it to a starter-templates plugin that was blocking updates. The fix was to deactivate that plugin, update it, reactivate it, and then update everything else. Retrying the same bulk update without finding the cause just recreates the lock.

    Which kind of maintenance plugin fits the job?

    Pick the lightest tool that does the job. Plugins in this category range from a single switch to a full page builder, and the extra weight only pays off when you use it. Install bands below are from the WordPress.org directory.

    The jobWhat you needExample from the directory
    A 20-minute update windowAn on/off switch and a 503 statusSlim Maintenance Mode (10,000+ installs): no settings page, and only administrators see the site
    A branded holding page for an established businessA logo, a message and access rulesMaintenance by WebFactory (1,000,000+): a 503 status and a temporary page you edit in its settings
    A client reviewing work while the public sees a noticeA bypass by role or linkCMP by NiteoThemes (200,000+), recommended in r/Wordpress threads for its client bypass link
    A pre-launch page with a signup formA page builder and form handlingLightStart (400,000+), described on WordPress.org as a drag-and-drop page builder

    Practitioners in WordPress.org and Reddit threads keep asking for the same three things: a plain switch for update windows, preview access for clients, and the option to use an existing WordPress page as the holding page. The third request usually ends with someone suggesting custom code. Test before you trust any feature list, including the one above. Bypass rules and paid tiers change between versions.

    If you are writing the message itself, our coming soon text examples cover the difference between a launch announcement and a notice that the site is down.

    Why does the plugin look broken when it isn’t?

    Usually there are two reasons: you are logged in, or a cache is serving an old copy.

    You are logged in. Administrators bypass the holding page, and on some plugins any logged-in user does. Owners who test while signed in often decide the plugin “won’t publish.” Test in a private window or on another device. Note whether your plugin’s bypass applies to administrators only or to every logged-in account. On a store, every customer who logs in counts as a logged-in user.

    A cache is serving the old page. This can be a page cache plugin, your host’s server cache or a CDN. It explains both “I turned it on and nothing happened” and “I turned it off and visitors still see it.” In one resolved WordPress.org thread, the maintenance page stayed up after the plugin was deleted, and there was no .maintenance file. The cause was caching. LightStart’s FAQ advises turning off cache plugins while its mode is on, or clearing the cache after every change. Purge every layer each time you switch the mode on or off.

    On LightStart, check the exclusions too. Its documentation says exclusions match parts of URLs, so excluding / matches every page and opens the whole site. If you use a custom login URL, add it to the exclusions, or you may lock yourself out of the login page.

    What should the page tell search engines?

    Visitors read the page. Search engines read the status code. A page can look like a maintenance notice and still return 200 OK. Search engines then treat it as the site’s real content.

    Google Search Central gives specific guidance for closures:

    • If the site is fully down for one or two days, return a 503 with a best-effort Retry-After header and show a short, helpful page.
    • For longer closures, keep the site online and limit what it does, for example by disabling the cart.
    • Don’t block the site in robots.txt, return 403, 404 or 410, or use noindex to signal a temporary closure.

    A coming-soon page for a site that has never launched is a different case. It is common practice to serve it with a 200 status so it can be indexed as the real front page. Google’s closure guidance covers existing sites, not pre-launch pages.

    Check the response, not the preview. Open your browser’s developer tools, select the Network tab, and load a deep page (not the homepage) while logged out. Or run:

    curl -I https://example.com/some-page/

    The first line should read HTTP/2 503 (or HTTP/1.1 503). Look for a retry-after line too. LightStart’s changelog includes a fix for a 503 problem in its selected-page mode, which is a good reminder that a correct-looking screen doesn’t prove a correct status.

    How do you use maintenance mode around plugin updates?

    On a simple brochure site, you often don’t need a plugin. Core already blocks visitors for the few seconds each update takes. On a store, or any site where a half-updated page could take a payment or a booking, use maintenance mode on purpose.

    WooCommerce’s update guide sets out the order:

    1. Take a current backup.
    2. Test the updates on a staging copy first.
    3. Put the live store in Coming Soon mode so customers can’t check out while files and the database change.
    4. Run updates one at a time and wait for each to finish before refreshing, navigating away or starting the next.
    5. Run the WooCommerce database update when you’re prompted.
    6. Test the key store workflows: cart, checkout, and the payment method you use most.
    7. Reopen. If anything is wrong, keep checkout closed, restore from the backup if needed, and troubleshoot on staging.

    Step 7 is the one people skip. When the holding page comes down, all you have confirmed is that it’s gone. Load the checkout as a customer, then clear caches so nobody gets served the maintenance page.

    Not everyone wants to run this routine every month. SiteSelf handles plugin and core updates on request through chat: before it starts, it says what is about to change and whether that can be undone, and afterwards it reports what it checked on the live page.

    When is maintenance mode the wrong tool?

    A maintenance plugin is meant for short, planned pauses that visitors will notice. It doesn’t fit these jobs:

    • Weeks of rebuild work. In an r/woocommerce thread, practitioners advised building on staging and going live in a short window. Running a store behind a holding page for weeks risks search visibility. Copying a staging database over the live one can also wipe out orders placed in the meantime.
    • A month-long holiday closure. Use catalog mode, a notice, or mark products out of stock. This matches Google’s advice to limit functionality. Replies in the same community strongly advised against pointing DNS somewhere else.
    • Keeping a dev site out of Google. “Discourage search engines” relies on robots.txt and isn’t foolproof. A staging site needs real access control.
    • Migrations and server-level risk. A plugin only runs once PHP and WordPress have loaded. If the change can break WordPress itself, a static HTML page or a rule on the server is more reliable.

    Stop and call your host if the maintenance screen turns into “Error establishing a database connection” or 500-range errors that keep coming back. Learn WordPress’s debugging material for site owners treats those as signs of a wider server problem, not a plugin setting.

    Frequently asked questions

    How do I turn maintenance mode off?

    For a plugin, switch it off in the plugin’s settings, save, and purge every cache. For core’s update screen, delete the .maintenance file from the folder that holds wp-config.php, or run wp maintenance-mode deactivate. Then finish the interrupted update.

    Can I put WordPress in maintenance mode without a plugin?

    Not from the dashboard. Core’s only maintenance state is the temporary one it creates during updates. Developers sometimes write a small template or a server rule instead. That works, but someone has to maintain it, so most owners use a lightweight plugin.

    Does maintenance mode hurt SEO?

    A short closure with a 503 status and a Retry-After header is what Google recommends for one or two days. Problems come from long closures, a holding page served with 200 OK, or using noindex or robots.txt to hide the site. Check the status code before you leave it running.

    What’s the difference between coming soon and maintenance mode?

    Coming soon is for a site that hasn’t launched yet. Maintenance mode is a temporary outage on a site that already has visitors and search rankings. Practitioners on Reddit warn against using coming-soon mode on an established site, because it can cause indexing problems.

    Can my client preview the site while it’s hidden?

    Yes, if the plugin supports a bypass link or role-based access. Many plugins let only logged-in users through, so a client would need an account. Test the bypass with a real non-admin account before you send the link.

    Does maintenance mode protect the site during a security problem?

    No. The plugin runs inside WordPress, so an attack against PHP or the server reaches the site before the plugin loads. Use your host’s controls or a static page for that.

  • 503 response code on WordPress and what it means

    Key takeaways

    • RFC 9110 defines 503 Service Unavailable as a temporary overload or maintenance condition. The server may send a Retry-After header, given either in seconds or as an HTTP date.
    • WordPress core returns its own 503 with Retry-After: 600 while an update runs. A leftover .maintenance file keeps that response going until someone deletes the file and runs the update again.
    • Check the status with curl or the browser’s Network panel while logged out. Logged-in admins skip maintenance pages, and a page can look like a maintenance screen while it returns 200.
    • Google’s Search Central guidance says a 503 is right for a short pause of a few days at most. For a longer closure, serve a 200 placeholder page, and don’t use robots.txt to shut the site down.
    • Retrying a page view is usually harmless. Retrying a checkout or form submission is not, because the server may have finished the action before something else returned the 503.

    A 503 is the one server error that is designed to be sent on purpose. It tells the browser, and Google, “not right now, try again later.” That is very different from “this page is broken” or “this page is gone.” It also says nothing about what caused it, which explains why people often fix the wrong thing.

    This article covers what the code means, how to read it, and how to work out which part of a WordPress setup sent it. If your site is down right now and you want the repair steps, our guide on how to fix a 503 error on WordPress goes through them in order.

    What does a 503 response code actually say?

    It says the server is temporarily unable to handle the request, usually because of overload or maintenance. Section 15.6.4 of RFC 9110, the HTTP semantics standard, defines it this way, and MDN’s 503 reference describes the server as “not ready to handle the request.”

    “Temporary” describes what the server intends. It doesn’t mean the problem will clear by itself. An overloaded server may recover when traffic drops. A maintenance setting someone forgot to switch off will keep returning 503 for weeks. The two produce the same number.

    The server may add a Retry-After header, given either as a number of seconds or as an HTTP date. When it’s there, the server is estimating how long you should wait. When it’s missing, nobody has given an estimate, and you should treat the 503 like any other server error you need to investigate.

    How do you read the 503 instead of the error page?

    Look at the response headers. The wording on the page is the least reliable evidence you have. A CDN can put its own branded page in front of an error from your host, and a maintenance plugin can show a friendly holding page that doesn’t return a 503 at all.

    In Chrome or Firefox, open Developer Tools, go to the Network tab, reload, and click the first request (the document itself, not an image). Under Headers, note the status code, any Retry-After value, any Server or CDN headers, and the time. From a terminal, this prints the headers of a real GET request:

    curl -s -o /dev/null -D - https://example.com/
    
    HTTP/2 503
    retry-after: 600
    content-type: text/html; charset=utf-8

    Plain curl -I also works, but it sends a HEAD request, and some caches and firewalls answer HEAD differently from GET. If the two disagree, trust the GET.

    Test while logged out, in a private window or with curl. WordPress maintenance plugins let logged-in administrators through, so the owner sees a normal site while every visitor gets the holding page.

    Which part of a WordPress site sent the 503?

    There are five usual sources. Where the 503 appears, and when, tells you more than the code does. A 503 on every URL points somewhere different from a 503 that only hits checkout or only appears while you save a post.

    SourceWhat you usually seeCheck first
    WordPress core, mid-update“Briefly unavailable for scheduled maintenance. Check back in a minute.” on every URLA .maintenance file in the WordPress root
    A maintenance or coming-soon pluginA branded holding page for visitors, a normal site for adminsThe plugin’s on/off setting, tested while logged out
    Hosting resource limitsCached pages load, while checkout, login, search and wp-admin fail, often at busy timesThe host’s CPU, memory, process and PHP worker graphs at the time of the error
    A security layerOne action fails, such as saving many product variations or connecting an accountThe firewall or ModSecurity log entry for that request
    A CDN or proxyA CDN-branded page, or an error that remains after the origin recoversThe same URL with the CDN bypassed

    Core maintenance is the easiest to recognise

    During an update, WordPress puts a .maintenance file in the site root. While that file exists, the core function wp_maintenance() answers every request with a 503 and Retry-After: 600, which asks clients to come back in ten minutes. If the update is interrupted, the file stays and so does the 503. WordPress.org’s troubleshooting FAQ says to delete the file and then run the update again. Deleting the file clears the message. It does not finish the update. Our article on why WordPress updating failed covers that second half.

    Resource limits are the most common cause, and the most misread

    Nobody publishes data on how often each cause occurs. In support threads, though, the cause reported most often is the host running out of capacity. On most hosts, PHP workers are the processes that build WordPress pages that aren’t cached. When every worker is busy, new requests wait in a queue, time out, and come back as 503s. Cached pages skip the workers completely. That’s why a store’s homepage can look fine while checkout fails, because checkout, cart, login and admin pages are never served from the page cache.

    A bigger plan or more memory only helps if you’ve confirmed that a limit is actually being hit. More workers need more RAM and send more simultaneous queries to the same database. If one slow query or plugin is holding workers, more capacity just postpones the next outage. In one WordPress.org WooCommerce support thread, the host said the site needed a VPS. The 503 actually went away when the owner replaced a product-category element on the home page.

    Security rules can return 503 to a single action

    WooCommerce’s documentation on large data not saving names servers running mod_security, along with PHP’s max_input_vars limit, as reasons why saves of product variations and tax rates fail. If the 503 only appears on one form or one admin action, look for the rule that matched that request. Don’t switch the firewall off. Ask the host for a targeted allow rule instead.

    A CDN usually relays the 503 rather than causing it

    If the error page carries a CDN’s logo or a request ID, that only proves the request went through the CDN. Most CDN-delivered 5xx errors start at the origin server. Bypass the CDN (most offer a development or pause mode) and request the same URL again. If the 503 disappears, the CDN is serving a cached error, and purging that URL fixes it. If it stays, the problem is at the origin.

    How is a 503 different from a 500, 502, 504 or 429?

    The other codes describe a fault, a broken handoff or a single client over its limit. A 503 describes a service that is unavailable for now. That changes what you do next.

    CodeWhat it meansWhat it suggests on WordPress
    500 Internal Server ErrorThe server failed and gave no reasonA PHP fatal error, a bad .htaccess rule or a memory error. See our guide to the 500 error
    502 Bad GatewayA proxy got an invalid response from the server behind itPHP crashed or the PHP-FPM socket is down behind Nginx or a CDN
    503 Service UnavailableTemporarily unable to handle the requestMaintenance, full worker pools or a deliberate block
    504 Gateway TimeoutA proxy gave up waiting for the server behind itA slow query, import or remote API call that ran past the proxy’s timeout
    429 Too Many RequestsThis client is over a rate limitA security plugin or host throttling one IP. The site is up for everyone else

    Hosts don’t always pick the textbook code. Some stacks turn a PHP crash into a 503 instead of a 502, so use the table to decide where to look first, not as proof of the cause. If the PHP error log shows a fatal error at the same timestamp, follow the log. Our WordPress fatal error guide shows how to read the file path it names. WordPress.org’s Recovery Mode documentation notes that Recovery Mode doesn’t activate for fatal errors in cron or background tasks, so a missing recovery email doesn’t mean nothing failed.

    When is it safe to retry a 503?

    When the request only reads something. Reloading a page or fetching an image is a GET request, and repeating it changes nothing. Under heavy load, though, every reload occupies a worker again, so wait for the Retry-After period if there is one. Refreshing again and again makes an overloaded server slower to recover.

    Checkouts, form submissions and cart updates are different. The server may have recorded the order or taken the payment before a proxy or a timeout sent the 503 back. Before anyone resubmits, check the WooCommerce orders list, the payment provider’s dashboard or the form plugin’s entries. A 503 on a POST tells you the response failed. It doesn’t tell you the action failed.

    For scripts and integrations that call your site, use bounded exponential backoff with jitter. That means waiting longer after each failure, adding a random offset so clients don’t retry in sync, capping the delay, and stopping after a fixed number of tries. Tight retry loops from monitors and integrations are a common way a brief overload turns into a long one.

    When should your site return a 503 on purpose?

    When you take it offline for a short, planned reason: a migration, a database restore, a pause in sales. Google’s guidance on temporarily pausing or disabling a website recommends a 503 page for brief shutdowns lasting a few days at most. The page should be lightweight, include a Retry-After header and tell visitors when you’ll be back or how to reach you. Google’s crawl-rate documentation puts the window at a couple of hours to one or two days. If the closure will run longer, serve a normal 200 placeholder page instead. A 503 that lasts weeks tells Google the site is unreliable.

    The same page warns against two shortcuts: blocking the site in robots.txt, and adding noindex to shut it down. Both are harder to undo than a status code.

    A few habits keep planned downtime honest:

    • Check the status, not the look. Run curl while logged out and confirm you get 503 and not 200. A maintenance page that returns 200 tells search engines the holding page is your content.
    • Prefer a server-level 503 for real work. A rule in .htaccess, Nginx or the CDN keeps working even when PHP or the database is the thing you’re working on. A plugin-based 503 needs WordPress to load before it can respond.
    • Clear every cache when you finish. The WordPress cache, the host’s server cache and the CDN each store their own copy. Visitors can keep seeing the holding page after you switch it off, or see the live site while the plugin still thinks it’s on.

    Our article on coming soon text in WordPress covers the visible side: what the holding page should say.

    What should you do with an unplanned 503?

    Write down the URL, the time with time zone, the status, the headers and which actions fail. Then match that against the table above before you touch a plugin. Disabling every plugin on a live store removes checkout, forms and security together. It often hides the evidence too, and it rarely helps when the real problem is a full worker pool. If the host’s graphs show a limit being hit at that timestamp, send them that evidence. If the PHP log names a file, start there. The step-by-step 503 fix covers plugin isolation over FTP, Health Check troubleshooting mode and the CDN purge.

    If you’d rather not dig through logs yourself, SiteSelf can find and fix the failing layer on request through chat. It needs hosting (SSH) access for log and file work, and it reports what it changed and what it checked.

    When the site is back, check the things a working homepage can hide. Load checkout and wp-admin while logged out and logged in. Reconcile any orders placed while the site was failing. Confirm that scheduled posts actually went out, because WP-Cron only runs when visitors load pages, and nobody got through during the outage.

    Frequently asked questions

    Do visitors need to clear their browser cache after a 503?

    Almost never. The 503 comes from the server, a cache layer or the CDN, not from the visitor’s browser. If people still see the error after the origin recovers, purge your page cache and the CDN entry for that URL.

    Does a 503 hurt SEO?

    Not when it’s short. A 503 is the signal Google asks for during brief downtime, and Googlebot comes back later to recrawl. A 503 lasting more than a few days, or a site that returns 503s on and off for weeks, can affect how the site appears in Search.

    Why does only wp-admin or checkout return 503?

    Those pages are never served from the page cache, so each request needs a PHP worker and usually several database queries. If workers are scarce, those pages fail first while cached pages keep loading. A firewall rule matching admin or checkout requests produces the same pattern.

    What does “a 503 Service Unavailable error was encountered while trying to use an ErrorDocument” mean?

    The server tried to show a custom error page, and fetching that page hit a 503 as well. It usually means the whole backend is unavailable rather than one URL. Look at the host’s status and resource graphs first.

    Is 503 the right status for a coming-soon page on a new site?

    Only for a short wait. A site that won’t launch for weeks is better off with a 200 placeholder page that says what’s coming. That fits Google’s advice to keep 503 to a few days at most.

  • How a 301 permanent redirect affects SEO

    Key takeaways

    • Google’s site-move documentation says permanent redirects don’t cause a loss in PageRank, and also that rankings can move around while Google recrawls the new URLs.
    • Saving Settings > Permalinks doesn’t redirect anything. It flushes rewrite rules, so every old URL under the previous structure can start returning 404s.
    • wp_redirect() sends a 302 unless you pass 301, and it doesn’t stop the script, so call exit after it.
    • Google follows up to 10 hops but recommends no more than 3. Point each old URL straight at its final page.
    • If a deleted page has no real replacement, return a 404 or 410. Google may treat mass redirects to the homepage as soft 404s.

    You rename a service page, tidy up a product category, or move the site to HTTPS. The new URL works. But Google still has the old one indexed, other sites still link to it, and customers still have it bookmarked. A 301 redirect connects those old requests to the new address. Whether your search traffic makes it across depends almost entirely on how carefully you set up those redirects.

    This article explains what a 301 does for search, when it’s the right response, and where WordPress sites usually get it wrong. For step-by-step setup, see our guide to redirecting a page in WordPress.

    What a 301 tells Google, and what it doesn’t promise

    A 301 is a server response that says “this resource has moved permanently.” The new address goes in the Location header. Browsers and crawlers follow it automatically. Google’s redirect documentation treats a permanent redirect as a strong signal that the destination should become the canonical URL, the one shown in search results.

    The old fear was that every 301 “leaked” a fixed share of link value. Google has since said the opposite. Its site moves and migrations guide says permanent redirects don’t cause a loss in PageRank. The same guide also warns that rankings can fluctuate while Google recrawls and reprocesses the moved URLs. Both statements are true. A 301 carries the signals over. It doesn’t guarantee the new page ranks where the old one did.

    That gap matters most when the content changes too. If the new page drops the text, headings or offer that ranked the old one, the redirect carries signals to a weaker page. Change the URL and the content at the same time and you won’t be able to tell which change caused the drop.

    Big moves can take a long time to settle. In a 2025 Search Engine Journal study of 892 domain migrations, estimated organic traffic took an average of 523 days to match the old domain. The sample was self-selected and limited to domain moves, and the study doesn’t separate the effect of redirects from everything else that changed. A single slug change on a small site is a much smaller event. Still, plan for some movement.

    When is a 301 the right response?

    Use a 301 when the move is permanent and the new page is a real replacement for the old one. Google’s test is simple: if you expect to reverse the redirect later, it isn’t permanent, so use a 302 or 307 instead. A 308 is also permanent. The difference from a 301 is that it keeps the request method.

    SituationResponseWhere it should point
    Slug or permalink structure changed301The same page at its new URL
    HTTP to HTTPS, or www to non-www301Same path on the preferred protocol and host
    Domain move301The matching page on the new domain, not its homepage
    Two overlapping posts merged301The post you kept
    Product discontinued, close successor exists301The successor, or a category that serves the same buyer
    Product out of stock but coming back302, or no redirectTemporary page, if you need one at all
    Page deleted, nothing equivalent404 or 410Nowhere
    Page refreshed at the same URLNo redirectKeep the URL

    WooCommerce’s Product 404 Redirects documentation draws the same line for stores. It recommends a 301 for permanently deleted products and a 302 for products that are only temporarily unavailable. It also warns against choosing a destination that redirects back to the original URL.

    The row people resist most is the last real one: deleted, nothing equivalent. Sending every dead URL to the homepage feels safer than a 404. Google’s migration guide says otherwise. Redirecting unrelated old URLs to the homepage can confuse visitors, and Google may treat those redirects as soft 404s. If a page has no real replacement, a clear 404 is the honest answer, and you can make it a useful one with a custom 404 page.

    Why WordPress changes URLs without redirecting them

    Most redirect problems on WordPress start with a URL that changed and nobody added a redirect for it. WordPress makes these changes easy and covers them only partly.

    Changing permalinks redirects nothing. When you click Save under Settings > Permalinks, WordPress applies the new structure and flushes its rewrite rules. Old URLs aren’t mapped to new ones. Switch from /2024/05/post-name/ to /post-name/ and every dated URL that Google has indexed can start returning 404s. WooCommerce’s permalinks documentation gives the same warning for product and category bases.

    WordPress Settings Permalinks screen where changing the structure alters URLs without creating 301 redirects
    Selecting a new permalink structure and clicking Save Changes flushes your site rewrite rules without creating redirects for your existing links. · Source: kinsta.com

    Old-slug redirects cover only some cases. WordPress core has wp_old_slug_redirect(), which looks up a post’s past slugs when a request would otherwise 404. It’s useful. But it doesn’t cover structure changes, and you shouldn’t assume it caught a particular URL. Test the old address itself. Our explainer on what a WordPress slug is covers where the slug ends and the rest of the permalink begins.

    Canonical redirects aren’t bugs. redirect_canonical() sends requests to the URL WordPress considers correct, based on host, HTTPS and trailing slash. Owners sometimes see an unexpected 301 from it and switch it off. That can leave duplicate versions of the same page reachable, which is the problem it exists to solve.

    Custom code defaults to temporary. In WordPress developer resources, wp_redirect() takes a status of 302 by default and doesn’t stop execution. For a permanent move in a theme or must-use plugin:

    wp_safe_redirect( home_url( '/new-page/' ), 301 );
    exit;

    Leave off the 301 and you’ve told Google the old URL is coming back.

    Where should the redirect live?

    A WordPress request can be redirected by WordPress core, a redirect plugin, an SEO plugin’s redirect manager, .htaccess or Nginx rules, your host’s dashboard, and Cloudflare. Any of these layers works. The trouble starts when two of them handle the same URL. Pick one owner for each rule and write down which one it is.

    Google prefers server-side redirects when you can use them. A plugin like Redirection still returns a real 301 from PHP, so it’s a sound choice for owners without server access. Server rules handle the request before WordPress loads, which suits large rule sets. A mistake in a server rule, though, can break more than the page you meant to move. Our guide to htaccess 301 redirects shows where custom rules go so WordPress doesn’t overwrite them.

    Two host differences catch people after a migration:

    • WP Engine has deprecated .htaccess support. Redirects belong in Web Rules, which run in order. A broad rule placed above a specific one wins. Old .htaccess redirects may simply stop working after a move.
    • Kinsta’s redirect tool treats every source as a regular expression. Anchor paths with ^, and with $ for exact matches, or a rule can match its own destination and loop. Kinsta also says the tool can’t redirect query strings, and asks you to contact support for those.

    If you’d rather hand off the map and the checks, SiteSelf handles 301 redirects and SEO settings through chat. It uses its connector plugin for plugin-level redirects and hosting access for server rules, and it reports what each old URL returns afterwards.

    The mistakes that actually cost traffic

    When practitioners on r/Wordpress, r/webdev and the wordpress.org forums describe a traffic collapse after a rebuild, the cause is rarely the 301 status code. It’s usually one of four things, roughly in this order of how often they come up.

    Old URLs that nobody listed

    A rebuild changes the URL structure, someone redirects the pages in the main menu, and hundreds of old posts, product URLs and PDFs end up returning 404s. Fix this before launch. Export every URL from your sitemap, Search Console’s indexing and performance reports, analytics landing pages and your backlink tool. Then map each one to its closest real equivalent. A poster on r/webdev who migrated 3,100 URLs from a 14-year-old WordPress site said starting that spreadsheet late was the biggest regret of the project.

    Bulk redirects to the homepage or a broad category

    For large catalogues, the approach practitioners defend most often is a hybrid. Map your high-value URLs one to one. Send low-value ones to the closest category or brand page that genuinely fits. Return a 404 or 410 where nothing fits. Plugins that redirect every 404 to the homepage are popular, but the Redirection plugin’s own FAQ advises against redirecting all 404s.

    Chains

    A chain happens when site moves pile up: http:// goes to https://, then to www, then to the new slug. Google’s redirect documentation says Googlebot follows up to 10 hops but advises avoiding chains, ideally keeping them to 3 or fewer and always under 5. Point every old URL directly at the final page. Then update your menus, internal links, canonical tags and sitemap so your own site never goes through a redirect at all. Our guide to updating internal links in WordPress covers the editor side.

    Loops

    ERR_TOO_MANY_REDIRECTS means two layers disagree. A common case is documented by Cloudflare: in Flexible SSL mode, Cloudflare talks to your server over HTTP. If the server also redirects HTTP to HTTPS, the request bounces between them forever. Cloudflare’s fix is Full mode or higher, which needs a certificate on the origin server. Other causes are a force-HTTPS plugin turned on before HTTPS actually works, www and non-www settings that disagree, and regex rules with no anchors. SSL errors behind Cloudflare often show up alongside loops. Trace the chain before you clear caches or disable plugins. Those steps can hide the problem without telling you which rule caused it.

    Chrome ERR_TOO_MANY_REDIRECTS error caused by a 301 redirect loop
    The ERR_TOO_MANY_REDIRECTS browser error signals that edge services and origin servers are caught in an endless loop over the requested URL. · Source: kinsta.com

    How to tell a 301 is doing its job

    Check the actual HTTP response, logged out, after clearing your page cache. A browser alone won’t tell you much. Browsers cache 301s, so your browser may keep following a rule you’ve already changed. From a terminal:

    curl -sIL https://example.com/old-page/

    Each HTTP/ line is one hop. A good result shows one 301, a Location header with the final URL, and then a 200. Two or more 3xx lines mean a chain. A 302 where you expected a 301 means the wrong status. Repeating URLs mean a loop. The Redirection plugin also has an HTTP checker that shows each hop, if you’d rather stay in wp-admin.

    Then check the destination like a visitor would. Does the page load, answer the same question, and still let people buy or get in touch? In Search Console, “Page with redirect” is the expected status for a URL that redirects on purpose. A “Not found (404)” report that suddenly fills with old URLs means pages were missed.

    Google Search Console Page with redirect status for URLs using a 301 permanent redirect
    Google Search Console categorizes intentionally redirected URLs under the Page with redirect status in its indexing report. · Source: rankmath.com

    Keep the redirects. Google’s migration guide says to keep them for at least a year and to consider keeping them indefinitely, because people will keep clicking old links long after Google has updated its index. If you moved domains, keep the old domain registered so its redirects keep working.

    Frequently asked questions

    Does a 301 pass link equity?

    Yes. Google says permanent redirects don’t cause a PageRank loss, which replaces older advice about a fixed percentage lost per redirect. What a 301 can’t do is make the new page as relevant as the old one if its content got thinner.

    Should I use a 301 or a 308?

    Google treats both as permanent. A 308 keeps the request method, which matters for form submissions and API endpoints. For normal pages, a 301 is the usual choice, and most WordPress plugins offer it by default.

    Can a site have too many redirects?

    The number of redirects across the site is rarely the issue. Hops per URL are. Keep each old URL one step from its final page. A thousand single-hop redirects are healthier than ten five-hop chains.

    Do I need redirects when I move hosts but keep my URLs?

    Not if the domain and every path stay the same. Still, test a sample of URLs after the move. Hosts handle rules differently, and redirects that lived in .htaccess won’t run on a host that ignores that file.

    Why does WordPress redirect a URL I never set up?

    Usually it’s core doing its job. redirect_canonical() normalises host, HTTPS and trailing slashes, and wp_old_slug_redirect() forwards some old post slugs. Find the layer sending the redirect before you change anything, and don’t turn off canonical redirects to make the redirect go away.

    How long should I wait to judge whether redirects worked?

    Visitors are redirected the moment the rule goes live. Google’s recrawl runs on its own, slower schedule. Compare the affected pages against their numbers from before the change over several weeks, rather than reacting to the first few days.

  • Do you need a WordPress landing page builder?

    Key takeaways

    • HTTP Archive’s 2025 Web Almanac found a page builder on about 60% of WordPress sites, and the plain Block Editor on 18%. A builder is common, but you don’t need one to make a landing page.
    • Elementor deprecated its separate Landing Pages feature in Pro 3.27. Those pages were never allowed to be the homepage. Build on a regular Page with a saved template instead.
    • Builder choice does not set your speed. The Admin Bar’s audit of 150+ agency sites found medians between 66 and 77 across builders, with sample sizes as small as six.
    • Most ‘the builder broke’ moments come from WordPress settings, caches or plugin conflicts. Check Settings > Reading, test while logged out, and keep WooCommerce’s Cart, Checkout and My Account on separate pages.
    • The cost shows up later, in renewals, layouts that drift and pages locked into one builder’s format. Before you commit a whole campaign library to a tool, test how you would get your pages out of it.

    About 60% of WordPress sites run a page builder, according to HTTP Archive’s 2025 Web Almanac. Most of those builders were picked in an afternoon to get one page live. The site then keeps them for years, along with their renewals and updates, and a page format that only that builder can read.

    So “which WordPress landing page builder should I use?” is really two questions. Do you need a builder for this page at all? And what will you be maintaining once the page is live? This article answers both. If you want the ground-level version first, our guide on what a landing page builder really is covers the basic idea.

    What counts as a landing page builder on WordPress?

    The phrase covers four kinds of tools. They lock you in to very different degrees.

    Kind of toolWhat you getWhat you take on
    The block editor, optionally with a block toolkitNative WordPress pages, patterns and templates. Toolkits add more layout blocks.Fewer moving parts. Clients may find the editor less intuitive.
    A general visual page builderDrag-and-drop layout, template libraries, often forms and popupsA second editing system, its updates, and layouts stored in its own format
    A dedicated campaign or coming-soon pluginStandalone pages with no theme header or footer, plus campaign templatesOne more plugin. It can also clash with other coming-soon or maintenance plugins.
    A hosted landing-page platform outside WordPressFast duplication and A/B testingAnother subscription and another login. The page does not live on your site.

    Marketers who use both kinds describe a sensible split. They use a hosted platform when they run many short campaigns and test constantly. They use WordPress for evergreen pages, and for pages that need the site’s existing forms and plugins or that get handed back to a client.

    Do you need a builder for one landing page?

    Often you don’t. A landing page is a normal WordPress Page with a focused layout and usually no main navigation. The block editor can build that. HTTP Archive’s 2025 data puts the plain Block Editor on 18% of WordPress sites. Plenty of people already work this way.

    The steps are short. Create a Page. Open the Template panel in the page settings sidebar. Pick a template without a header or footer, if your theme has one. Block themes often include a blank or no-title template. Classic themes sometimes offer a “Full width” or “Blank” option. If yours has neither, you can create one in Appearance > Editor > Templates. Then build the sections from patterns. Our walkthrough on building a landing page in WordPress goes through it screen by screen.

    WordPress landing page builder alternative: block editor Template panel for a page
    The page settings panel in the block editor lets you assign a dedicated template to strip away standard site clutter for a focused campaign page. · Source: www.boisestate.edu

    A builder earns its place in three situations:

    • The site is already built in one. If every page is Elementor, Beaver Builder or Divi, use that for the landing page too. Adding a second editing system for one campaign doubles the upkeep and doesn’t buy you anything.
    • You launch many pages from templates. Ready-made campaign layouts save real hours if you publish several pages a month.
    • Someone who can’t work in blocks will edit it. If the person maintaining the page can only work visually, the tool they are comfortable in is the right one.

    Popularity is a weak reason on its own. Elementor’s WordPress.org listing shows 10+ million active installs, more than any other builder. That gets you more tutorials and freelancers. It also gets you more conflict reports, because more sites are running it.

    Will the builder decide how fast the page loads?

    Less than people expect. The Admin Bar audited more than 150 live agency sites in 2025 and reported median Lighthouse scores of 77 for Bricks, 70 for Beaver Builder, 69 for Gutenberg and 66 for Elementor. Those groups were small, six sites in the Gutenberg case, and no two sites were built the same way. That is a spread, not a ranking.

    The page decides most of it: hero image size, how many widgets and third-party scripts it loads, and whether caching is set up. Practitioners do complain that heavy builders load unused CSS and JavaScript on every request, and a bigger hosting plan won’t fix that. Others point out that many “the builder is slow” threads turn out to be heavy pages. Both are true. Test the real page, with its form, tracking and images, before you blame the tool or buy a new one.

    What breaks after you publish, and usually isn’t the builder

    Most failures reported on WordPress.org and in builder docs come from settings, caches and conflicts. Check these first, roughly in order of how often they come up.

    The page is live but isn’t the homepage

    Publishing a page does not make it the front page. WordPress only shows it as the homepage once you choose it under Settings > Reading > A static page. In a block theme, a Front Page template can override that setting. If the homepage still looks wrong, check Appearance > Editor > Templates. Our guide on setting a page as the front page covers the edge cases.

    WordPress Reading settings setting a landing page as the static homepage
    Selecting a static page in the Reading Settings officially designates your newly published page as the site homepage. · Source: learn.wordpress.org

    Elementor users hit one extra trap. Its separate Landing Pages feature created a custom post type, and the Reading setting only lists regular Pages, so those landing pages could never be the homepage. Elementor’s help center now says the feature was deprecated in Pro 3.27 and is no longer supported. The route that works is to save the design as a template, insert it into a regular Page, and select that Page. Many older tutorials still describe the old feature.

    Visitors still see the old version

    The cache can sit in your browser, a caching plugin, the host’s server and a CDN, and each one holds its own copy. Test in a private window while logged out. Purge the plugin cache, then the server and CDN caches, then the browser cache. Elementor also generates its own CSS files. Its Tools screen can regenerate them when styles look stale. If an optimization setting keeps breaking the layout, exclude that one setting rather than turning caching off. The full sequence is in our page-not-updating guide.

    The editor won’t save or won’t load

    An “invalid JSON response” error, a gray editor or a 403 error on save usually means one of four things: a plugin conflict, mismatched builder versions, a memory limit, or a server firewall rejecting the save request. Open your browser’s developer tools and look at the Network tab to see which request fails before you change anything. One WordPress.org thread from September 2026 shows why order matters. Saves failed after Elementor 4.3.0, extra memory did not help, and rolling back to 4.2.4 did.

    The store stopped checking out

    On WooCommerce, a landing page must never take over the store’s own pages. WooCommerce’s documentation warns that assigning Cart, Checkout and My Account to the same page can cause incorrect redirects and broken payment gateways. Check the assignments under WooCommerce > Settings > Advanced > Page setup. Then put a real product through the cart and checkout, including the payment redirect. A visual preview doesn’t test any of that.

    WooCommerce page setup screen keeping Cart, Checkout and My Account separate from a landing page
    Dedicated assignments in the page setup settings keep essential cart, checkout, and account functions separated so customer orders process reliably. · Source: woocommerce.com

    The page doesn’t show up in Google

    Use URL Inspection in Search Console. Remove any noindex you didn’t intend. If you want a page kept out of search, use noindex, not robots.txt. Google’s documentation explains that blocking a URL in robots.txt can stop Google from ever seeing its noindex tag. Also check the form: every field needs a real label, not just placeholder text. A polished builder layout can hide that problem.

    What does the builder cost after the first year?

    The first page is the cheap part. Three costs come later.

    Renewals. Introductory prices are common, and renewal prices are higher. SeedProd’s pricing page, for example, says renewals are charged at the full price. When you budget, use the renewal figure, not the launch offer.

    Drift. Practitioners describe a familiar pattern. Someone imports a demo, tweaks it and ships it. A few months later the offer on the page is out of date, the mobile layout has drifted and a plugin update has broken a section. Nobody gets round to fixing it, because every small edit means opening the builder again.

    Lock-in. Visual builders store layout in their own format. If you switch tools, you may have to rebuild the pages. People who converted Elementor pages to blocks report leftover HTML blocks and broken widgets. Before you put a whole campaign library into a tool, export one page, move it to staging, and see what is left after you deactivate the builder.

    None of this decides whether the page converts. No source shows one builder producing higher conversion rates than another. A clear offer, one main action, proof near the form and a mobile layout someone actually checked do far more.

    How the work changes when an agent builds the page

    Most landing pages are small jobs: a headline, three sections, a form that already exists, a button. The process around them is not small. Someone has to open the editor, find the right template, wire up the form, remember the Reading setting, purge the cache and check the result. That coordination is what gets postponed, and it is why so many campaign pages go out late or never get updated.

    SiteSelf is an AI agent that works on your existing WordPress site. You describe the page in chat or from Telegram, and the agent does the page edits on your live site itself.

    Example request: “Make a landing page for the spring remodel offer at /spring-offer. Use the copy in this doc, no main menu, and put our existing quote form at the bottom. Keep it out of the navigation and don’t make it the homepage.”

    Here is what the agent would do. It creates an ordinary Page in the block editor and applies your theme’s template without a header, if the theme has one. It adds the copy and the existing form, publishes at that slug and leaves Settings > Reading alone. Before the change, it tells you what is about to change and whether you can undo it. What it did is recorded.

    To check the work, the agent fetches the published page and reports in chat whether the copy, the form and the status match what you asked for. That check is not a screenshot or a device test, so look at the page on your phone yourself.

    The access depends on the task. The SiteSelf Connector plugin from the WordPress.org directory covers page content and settings. A new template file or theme CSS needs hosting (SSH) access.

    There are limits. If the page is owned by Elementor, Divi or Beaver Builder, the agent refuses it at the moment of work and explains why. It won’t run A/B tests, write to your analytics or ad accounts, or keep an eye on the page afterwards. It works on request, so when the offer changes, you ask again.

    Frequently asked questions

    Can Elementor still create landing pages?

    Yes, through regular Pages. Elementor’s separate Landing Pages feature was deprecated in Pro 3.27. The supported approach is to save your design as a template and insert it into an ordinary WordPress Page. That Page can also be set as the homepage.

    Is a free builder good enough?

    For a basic page, usually yes. The limits tend to show up in forms, marketing integrations and larger template libraries, which are often paid features. If your site already has a form plugin, check whether you need the builder’s form at all.

    How do I remove the header and footer from a landing page?

    Choose a blank or no-header template in the page’s Template panel, if your theme provides one. In a block theme you can create one under Appearance > Editor > Templates. Builders have their own canvas or blank layout setting. To hide just the title, see our guide on hiding page titles safely.

    What happens to my pages if I deactivate the builder?

    It depends on the builder, and the content is often left as unstyled or unreadable markup. Test it on a staging copy before you rely on the builder for many pages. Don’t run that test on the live site.

    Should I use a hosted landing-page platform instead of WordPress?

    Use one if you run many short campaigns and A/B test constantly. Expect another subscription and another tool to manage. For occasional or evergreen pages that need your site’s existing forms and plugins, building on WordPress is usually simpler.

    Why does my landing page work for me but not for visitors?

    You are probably logged in. Private, draft and password-protected pages show to logged-in admins, and so do uncached versions of pages. Test in a private window while logged out, then purge your caches.

  • How to set up SEO friendly URLs in WordPress

    Key takeaways

    • On a new site, open Settings > Permalinks, choose Post name (/%postname%/) and save. You don’t need an SEO plugin for this.
    • Google’s URL guidance asks for descriptive words, hyphens, consistent casing and few parameters. It sets no character limit, and Rank Math says removing the category base is not guaranteed to improve rankings.
    • Clicking Save Changes on the Permalinks screen refreshes rewrite rules. It does not redirect anything, so URLs that have actually moved still need a one-to-one 301 or 308 redirect.
    • In WooCommerce, give products and categories different bases. WooCommerce warns that a shared base such as shop can stop WordPress telling them apart, and changed product URLs return 404 unless you redirect them.
    • If resaving permalinks doesn’t fix 404s on inner pages, look at the server’s rewrite setup, an .htaccess file WordPress can’t write to, a plugin conflict or a slug collision, in that order.

    A fresh WordPress install gives posts addresses like example.com/?p=123. WordPress’s own documentation calls this Plain structure reliable on any server but not user-friendly or optimized for search. Fixing it takes one setting and about ten seconds, as long as you do it before the site has a few hundred indexed pages.

    That timing is the whole story. Choosing a good URL structure is a one-time decision with almost no risk. Changing an existing structure is a migration: every old address needs to send people and search engines to its new one. URLs are one item on a longer list. The rest is in our guide to doing SEO on WordPress.

    What makes a URL SEO friendly, and what doesn’t

    An SEO friendly URL tells a person and a crawler what the page is about before they open it. /services/web-design/ does that. /page?id=8472 doesn’t. Google’s URL structure guidance asks for descriptive words instead of long IDs, hyphens between words, as few unnecessary parameters as possible, and consistent casing. Google treats /APPLE and /apple as two different URLs.

    Google does not set a character limit. It does not say that shorter URLs, extra keywords or a missing /category/ segment rank better. Rank Math, which sells a feature for removing the category base, says in its own documentation that doing so is not guaranteed to improve rankings. Clean URLs are hygiene. They help people read and trust a link, and they keep your site consistent. They will not lift a weak page.

    What does hurt is instability. Practitioner threads on Reddit and X rarely report a URL cleanup that boosted traffic. They often report a relaunch where addresses quietly changed and pages started returning 404s.

    Which permalink structure should a new site use?

    Post name, for nearly every site. It produces example.com/your-post-title/ and stays accurate however your categories change later. To set it:

    1. In the dashboard, go to Settings > Permalinks.
    2. Under Permalink structure, select Post name. The custom field shows /%postname%/.
    3. Click Save Changes.
    4. Open any post on the front end and check that the address now ends in its slug, not ?p=.

    If you write a custom structure, use structure tags such as %postname% and leave the domain out of the field. WordPress adds it. The same screen holds the Category base and Tag base fields. Leave them empty unless you have a reason to change them.

    When category or date in the URL makes sense

    Category plus post name (/%category%/%postname%/) works when your categories are few, short and unlikely to change. The cost: moving a post to another category changes its URL, and that needs a redirect. Dates suit news sites, where readers care when a story was published. On evergreen guides, a date keeps showing the original year long after you’ve updated the article.

    How to write slugs that hold up

    The slug is the last part of the URL, and it is separate from the title. WordPress builds it from the title when you first save. You can edit it in the post’s settings panel before you publish. Our explainer on what a WordPress slug is covers where to find it. Rules that work in practice:

    • Describe the page in a few words: /small-business-accounting/, not /accounting-services-for-every-small-business-owner-2026/.
    • Use lowercase and hyphens. Google recommends hyphens over underscores.
    • Include the main term once if it describes the page naturally. Don’t repeat it.
    • Don’t strip every stop word by reflex. /how-to-fix-a-leaking-tap/ reads better than /fix-leaking-tap/, and WPBeginner notes that keeping stop words can help readability.
    • Get the slug right before you share the post. Rewriting a title later doesn’t change the URL, and it shouldn’t.

    The common “under 60 characters” or “three to five words” rules are editorial habits, not Google requirements. A slug that could be shorter but is accurate is fine. Leave it alone.

    Why changing URLs on a live site is a migration

    Each changed URL is a new address. That applies whether you switch the permalink structure, rename a WooCommerce base, drop trailing slashes in a redesign, or lowercase addresses during a move. Unless each old URL redirects to its new one, links, bookmarks and search results all lead to 404s. WP Engine’s support docs warn that changing an established site’s structure can cause widespread 404s and affect SEO. WordPress.com notes that posts may not redirect automatically when the structure changes.

    A common mistake: people assume Save Changes on the Permalinks screen handles this. It doesn’t. Saving rebuilds WordPress’s rewrite rules, which fixes stale routing. It creates no redirects for addresses that have actually moved.

    Before changing an established structure, ask whether you have a concrete reason. One example from Reddit: a long-running news site wanted category data in its URLs for analytics. Commenters suggested tracking the category in GA4 instead of moving thousands of articles. If the change is still worth it, Google’s site move documentation describes the method:

    1. Export every current URL from a crawl, your sitemap or Search Console.
    2. Map each old URL to its closest new equivalent. Don’t send unrelated pages to the homepage. Google may treat those as soft 404s.
    3. Add server-side 301 or 308 redirects that go straight to the final URL, with no chains.
    4. Test the map on staging, then on the live site with a sample of old URLs.
    5. Update internal links, the XML sitemap and canonical tags to the new addresses.
    6. Keep the redirects for at least a year, and watch 404 reports and Search Console after launch.

    Even a clean migration can cause rankings to move for a while as Google recrawls. Use one redirect layer, either a plugin, server rules or your host’s tool, not several. Overlapping layers are how sites end up with ERR_TOO_MANY_REDIRECTS. For single pages, see how to redirect a WordPress page. For server rules, see htaccess 301 redirects in WordPress. If you would rather hand off the redirect map and the checking, SiteSelf handles 301 redirects and SEO settings through chat. Plugin-level redirects need the connector plugin, and rules in .htaccess need hosting access.

    On redirect plugins: Yoast’s redirect manager, including automatic redirects when a slug changes, is part of Yoast SEO Premium, not the free plugin. It uses PHP redirects by default. Whichever tool creates the redirects, open a few old URLs yourself and confirm where they land.

    WooCommerce: product and category bases

    WooCommerce adds its own fields under Settings > Permalinks. Product URLs can use /product/name, /shop/name, /shop/category/name or a custom base, and category and tag bases are set separately. WooCommerce’s permalink documentation makes three points worth knowing before you touch them:

    • Don’t use the same base, such as shop, for products and product categories. WordPress may no longer be able to tell them apart.
    • If you change product URLs, old product links return 404 unless you redirect them.
    • Attribute archive URLs only work if Enable archives is turned on for that attribute.

    Putting the category in product URLs looks tidy until a product sits in two categories. Then it can have two addresses, and you have to manage canonicals for both. On an existing store, the safest choice is usually to keep the defaults.

    Should you strip the category base?

    Only if you understand the trade. Rank Math’s Strip Category Base setting (Rank Math SEO > General Settings > Links, visible in Advanced mode) removes /category/ and redirects existing category URLs. Rank Math warns that a category slug matching a post, page or product slug can cause unexpected results. WooCommerce support has advised against removing the product category base for the same reason. A middle path Reddit store owners suggest is a short, unique base like /c/, which keeps the URL short without the collision risk.

    Why pretty permalinks return 404s, and how to fix them

    The classic symptom is that the homepage loads but every post and page returns 404. Work through these causes, most frequent first:

    1. Stale rewrite rules. These are common after a migration, an update or a new custom post type. Go to Settings > Permalinks and click Save Changes without changing anything. If that fails, switch to another structure, save, switch back and save again.
    2. An .htaccess file WordPress can’t write to. On Apache, the Permalinks screen then shows “You should update your .htaccess file now.” along with the rules to add. Back up the file first, then paste the rules into the # BEGIN WordPress block, keeping your own custom rules above it.
    3. A server that doesn’t route requests to WordPress. Apache needs mod_rewrite and permission for .htaccess overrides. Nginx ignores .htaccess completely and needs its server block configured. Resaving can’t fix either problem. Your host has to.
    4. A plugin conflict. A WordPress.org support thread documents TranslatePress 2.8.3 breaking WooCommerce product category pagination on several client sites. If resaving helps only until the next page load or update, a plugin is probably rewriting the rules. Deactivate plugins one at a time on staging until the 404s stop.
    5. A slug collision. A page and a category, or a page and a plugin route, share the same path. WordPress’s Common Errors handbook lists renaming the conflicting slug as the remedy. Rename it, then resave permalinks.
    WordPress permalinks notice asking to update the .htaccess file
    When server permissions prevent automatic updates, WordPress prompts you with the exact rules required to update your .htaccess file manually. · Source: www.wpbeginner.com

    Stop and get help when inner pages still return 404 after a resave and a clean .htaccess, when you’re on Nginx and don’t have access to the server config, or when the 404s started right after a URL change and you have no list of the old addresses. The first two are hosting problems. The third needs someone to rebuild the redirect map from crawl data and Search Console before more traffic leaks away.

    What to do about duplicate URLs from filters and parameters

    Store filters, sort orders, tracking tags and variant parameters can give one page dozens of addresses. Google’s guidance on consolidating duplicate URLs treats redirects and rel="canonical" as strong signals and sitemap inclusion as a weaker one. A canonical is a signal Google weighs, not an order it must follow. In practice: redirect when an old URL is gone for good, use a canonical when both versions have to stay live, and link to the same preferred URL everywhere, in menus, internal links and the sitemap. For product variants passed as optional parameters, point the canonical at the clean product URL.

    Frequently asked questions

    Do I need an SEO plugin for SEO friendly URLs?

    No. WordPress core sets the permalink structure under Settings > Permalinks, and you edit slugs in the editor. SEO plugins add extras such as redirect managers and category base removal, but the readable URL itself comes from WordPress.

    Does changing a post’s title change its URL?

    No. The title and the slug are separate, and editing the title after publishing leaves the URL as it was. Changing the category does change the URL if your structure includes %category%, so that move needs a redirect.

    Does WordPress redirect an old slug automatically?

    For posts, WordPress often remembers the old slug and redirects it. Pages and structure-wide changes are not reliably covered. Treat it as a bonus, open the old URL to check, and add a proper 301 if it doesn’t redirect.

    Should I add .html to my URLs?

    There’s little reason to. Yoast has long described the SEO benefit as negligible. On an existing site, switching to or from .html changes every URL and needs a full redirect map.

    Does the permalink structure affect page speed?

    Not in any way you would notice. The one public test, by developer Eric Mann, timed only request parsing in milliseconds, and the fastest structure changed between a clean install and a plugin-heavy one. Choose the structure for readability and stability.

    Are readable URLs good enough as link text?

    No. W3C’s WCAG technique G91 says a bare URL is generally not descriptive enough as link text. Write anchors that say what’s on the other end, even when the URL itself is clean.

  • What is a slug in WordPress and when to change it

    Key takeaways

    • The slug is one segment of the URL. The permalink is the whole address, and Settings > Permalinks sets the pattern for the whole site.
    • Retitling a published post or an existing WooCommerce product leaves its slug as it was, so the URL stays stable until you change it yourself.
    • A -2 on the end of a slug means something else already has that slug, often an item in Trash or a Media file. You fix it in the dashboard.
    • Saving Settings > Permalinks refreshes rewrite rules. It does not redirect an old URL and it does not fix a real name collision.
    • Slugs help readers more than rankings. Google asks for readable, hyphenated URLs, but leaving a working URL alone usually beats a cleaner one.

    Your page is called “Emergency Plumbing Services” and its address ends in /emergency-plumbing-services/. That last segment is the slug. It looks like a small text field. It is also the public address that bookmarks, emails, ads and search results point to.

    The definition takes one sentence. The trouble starts around it: a stray -2, a page that returns 404 after a rename, or a “quick” permalink change that breaks every link on the site. This article covers what a slug is, how WordPress makes one, and how to change one without losing traffic.

    What is a slug in WordPress, exactly?

    A slug is the readable, URL-friendly name of one item on your site. It is usually the last part of the URL. In example.com/about-us/, the slug is about-us. Posts, pages, WooCommerce products, categories, tags, custom post types and authors all have one.

    Child pages build on their parent’s slug. In example.com/services/consulting/, consulting is the child page’s slug and services is the parent’s. If you change the parent’s slug, the child’s URL changes too.

    The word means other things in WordPress as well. A plugin slug is the folder name a plugin uses in the directory. An author slug is the public name in an author archive URL. This article is about content slugs, the ones you see in the editor. If you are still setting up your site’s structure, our guide to adding pages in WordPress explains why the slug is worth deciding before launch.

    How is a slug different from a permalink?

    The slug names one item. The permalink is that item’s full address. The permalink structure is the site-wide pattern that decides where the slug sits in the address. WordPress’s permalink documentation describes permalinks as the permanent URLs of your posts and pages, and you set the structure under Settings > Permalinks.

    Permalink structureExample URLWhere the slug appears
    Plainexample.com/?p=123Not in the URL at all
    Post nameexample.com/first-post/The whole path
    Day and nameexample.com/2026/10/15/first-post/After the date
    Customexample.com/blog/first-post/After a fixed base

    Keep the difference in mind, because the two changes carry very different risks. Editing one slug changes one URL. Changing the structure changes every post URL on the site at once.

    WordPress permalink settings screen with structure options for the slug
    The WordPress permalink settings determine the global URL architecture, controlling exactly where each post slug appears across the entire site. · Source: www.boldgrid.com

    How does WordPress create a slug?

    WordPress builds the slug from the title when you first save. It lowercases the text, turns spaces into hyphens and strips punctuation and characters that are not allowed in a URL. The core function that does this, sanitize_title(), also converts accented letters to plain ASCII where it can. “Café Menu” becomes cafe-menu.

    Non-Latin titles are where the automatic slug lets people down. Developers often complain that slug tools handle umlauts, apostrophes and Cyrillic badly. If you publish in Chinese, Russian or Hebrew, look at the generated slug before you publish and decide whether you want a transliteration, a translation or the original script.

    One behaviour surprises a lot of people. Once an item is published, changing its title does not change its slug. WooCommerce’s product editor documentation says the same for existing products. That works in your favour: you can retitle a page as often as you like, and its URL stays put until you edit the slug yourself.

    Where do you find and edit a slug?

    Where the field sits depends on the editor and the content type. The job is always the same: open the item, find the URL or slug field, change it, save, then load the new URL.

    • Block editor (posts and pages): open the Settings sidebar with the panel icon at the top right, pick the Post or Page tab, and click the URL or slug field. WordPress.org’s Settings sidebar documentation covers this panel. The label has moved between versions, so look for the URL in that tab.
    • Classic editor: the permalink appears under the title once a draft is saved. Click Edit next to it.
    • Categories and tags: go to Posts > Categories or Posts > Tags and use Quick Edit next to the term. A category slug change moves the archive URL and every link to it.
    • WooCommerce products: use the Edit link next to the product URL, or the slug panel. Product and category bases, such as /product/, are set separately under Settings > Permalinks > Product permalinks.

    Save a draft before you publish, so you can check the slug before any visitor or crawler sees the URL.

    Editing a WordPress slug in the block editor settings sidebar
    Selecting the Page tab in the sidebar reveals the permalink panel where you can inspect and refine your URL slug prior to publishing. · Source: taylorhieber.co

    Why did WordPress add -2 to my slug?

    Something else already uses that slug. WordPress won’t give two items the same address, so it appends a number. The suffix is a symptom, not an error, and the item causing it is usually one you have forgotten about.

    Check these places in order:

    1. Trash. A trashed page still holds its slug. A WordPress.org forum moderator points to trashed posts and leftover imports as the usual culprits.
    2. Media. Uploading pricing.jpg can give the attachment the slug pricing, and then your Pricing page becomes pricing-2.
    3. Drafts and other content types. An old draft, a product or a custom post type item can hold the slug.
    4. Numbers only. A slug made only of digits, like 2026, can get a suffix too, because WordPress may read it as an ID or a date.

    Once you have found the item, delete it permanently or change its slug. Then go back to your page and type the slug you want into the field. WordPress will not rename the -2 page for you when the original goes. Clear your cache and load the URL.

    That same moderator also warns against deleting database rows to clear a hidden conflict. Use the admin screens first. Some cases stay stuck. One WooCommerce store owner on Reddit reported -8 suffixes on variable products coming back after hours of cleanup, and nobody posted a confirmed fix. If you reach that point, it is a job for a developer.

    What happens when you change a published slug?

    The old URL can stop working. Every link pointing at it, from your menu, other sites, old emails or Google’s index, can then land on a 404. A published slug change is a URL migration, however small the edit looks.

    WordPress gives you some cover, but not everywhere. It remembers old post slugs and often redirects them. WPBeginner’s redirect guide says this covers posts but not pages. Plugins and server rules can also get in the way. Don’t trust it. Test the old URL every time.

    To change a live slug safely:

    1. Copy the full old URL, including any parent path or language prefix.
    2. Change the slug and save.
    3. Add a permanent 301 redirect from the exact old URL to the new one. Our guide to redirecting a WordPress page walks through the options.
    4. Load the old URL in a private window. It should go straight to the new page in one hop, with no chain.
    5. Update your menus and the internal links that use the old address.

    Don’t point old URLs at the homepage. Google’s site move guidance says redirects to irrelevant pages may be treated as soft 404s. If nothing replaces the old page, a useful 404 page is the honest answer.

    Changing the whole permalink structure is a much bigger job. In a Rank Math support thread, a user switched structures and found old links sent to the homepage. Support explained that the plugin’s auto-redirect covers changes to individual slugs, not structure changes, and pointed to the Permalink Migration option in the Redirection plugin. On an established site, plan per-URL redirects before you touch that setting.

    If you would rather not do this by hand, SiteSelf can make the slug change, add the 301 and fetch the old URL to confirm it lands on the new page, all from a chat request. That is part of its WordPress SEO and redirect work.

    Do slugs help SEO?

    A little, mostly through clarity. Google’s URL structure guidelines ask for simple, readable URLs, hyphens rather than underscores, and words in your audience’s language. A slug like /wedding-photography/ tells a searcher what is behind the link before they click.

    No source we found measures a ranking gain from the words in a slug. Yoast suggests three to five words, roughly 30 to 50 characters. That is editorial advice, not a measured threshold. Use the main term if it fits naturally, keep the slug close to the page’s title, and stop there.

    The bigger SEO risk is breaking URLs, not choosing imperfect ones. Rewording a working slug to squeeze in a keyword trades a known-good URL for a redirect and a recrawl. Our guide on how to do SEO on WordPress puts slugs alongside the titles, links and content work that make more difference.

    Why does a page return 404 after a slug or permalink change?

    If one old URL is broken, it is missing a redirect. If many pretty URLs break at once, the cause is usually routing. WordPress’s common errors handbook gives the order to work in:

    1. Stale rewrite rules. Open Settings > Permalinks and click Save Changes without changing anything. That rebuilds the rules.
    2. Server rewrite support. On Apache, pretty permalinks need mod_rewrite and a correct .htaccess file. If saving does nothing, ask your host to check both.
    3. Name collisions. A custom post type with the same name as a page causes 404s. Rename the page and its slug, save the structure as Plain, then switch back to your preferred structure and save again.
    4. Plugin rewrite rules. In one WordPress.org report, a links plugin broke every two-segment URL on a site. Saving permalinks did not help, and deactivating the plugin did.

    Saving permalinks again and again will not fix a real collision. Once the save has failed and the host has checked the server, deactivate plugins one at a time on a staging copy. If the cause still won’t show, get a developer.

    WooCommerce product permalinks settings with product and category slug bases
    Configuring distinct URL structures for product categories and individual products prevents base collisions that trigger unexpected 404 errors. · Source: premmerce.com

    Frequently asked questions

    Can a post and a page have the same slug?

    The text can match when the full URLs differ, for example when posts use a date-based structure. Under the Post name structure both would want the same address, so WordPress adds a number to one of them. Pages and custom post types that share a path can also collide and return 404s.

    Is there a maximum slug length?

    No official limit is documented for everyday use, and we would not trust anecdotal numbers. Long slugs are hard to read and share, so keep yours to the few words that describe the page.

    Which permalink structure should I choose?

    Most practitioners recommend Post name, set before you publish real content. Avoid Plain, which gives URLs like ?p=123. If the site already has traffic, keep the structure you have unless you have a redirect plan for every URL.

    Can I change an author slug?

    Not from the standard profile screen. The author slug is stored separately from the display name, and changing it needs a plugin or code. Changing it moves the author archive URL, so redirect the old one.

    Does a descriptive slug help accessibility?

    Not directly. WCAG’s link-purpose guidance is about link text, not URL format. A clear slug won’t fix a “click here” link, and accessible link text doesn’t need any particular slug.

    Should I remove the /product-category/ base in WooCommerce?

    Only if you understand the tradeoff. WooCommerce’s permalink docs say the product and category bases must not conflict, and removing the base raises the risk of collisions in large catalogs. If you shorten it, redirect the old category URLs.

  • How to choose WordPress templates for business

    Key takeaways

    • “Template” can mean a theme, a starter site, a page-builder kit or a page pattern. If you upload the wrong one through the theme installer, WordPress says the theme is missing the style.css stylesheet.
    • Import starter templates on a fresh install or a staging copy. Their design settings apply to the whole site, and on a live Elementor site they have changed the colours, fonts and breakpoints of every page.
    • Check which page builder a template needs before you judge its looks. W3Techs detects Elementor on 31.5% of WordPress sites, and many starter designs won’t import without it.
    • Folio3 prices a premium theme at $40 to $200. Freshy puts a freelancer-built 5 to 15 page business site at $2,000 to $5,000. Most of the cost is content and setup, not the template.

    The WordPress.org listing for the Starter Templates plugin offers more than 300 ready-made website designs you can import. Every business template makes the same pitch: pick a design you like, and the site is mostly done.

    Mostly done is where the trouble starts. “Template” covers at least four different things. The demo is built from someone else’s content. And the template price is the smallest number in the project. This article covers what you are actually getting, how to choose a template for the site you will run (not the one in the demo), and how to install it without overwriting a site you already have. If you are still deciding whether WordPress suits your business at all, start with whether WordPress fits a business website.

    What “template” actually means in WordPress

    The word can mean four different things, and each one installs in a different place. Most first-day problems come from mixing them up.

    • A theme. This controls the design of the whole site. You install it at Appearance > Themes > Add New Theme > Upload Theme. Every theme has a style.css file at its top level.
    • A starter template or starter site. This is a complete pre-designed site, imported by a plugin on top of a theme. It brings pages and layouts, and often the global design settings too. Brainstorm Force’s Starter Templates plugin is one example. Its WordPress.org listing describes 300+ website templates, page templates and block patterns for Elementor and the block editor.
    • A builder kit. This is a set of layouts for one page builder, usually Elementor. It is not a theme. You import it through the builder or through the marketplace’s own plugin.
    • Page templates and block patterns. These are layouts for a single page or section inside the theme you already have.

    Upload the wrong one and you get the most common first-day error. If you push a marketplace download bundle, a builder kit or a plugin through the theme installer, WordPress replies: “The package could not be installed. The theme is missing the style.css stylesheet.” The fix is to unzip the download and find the installable theme ZIP inside. It is usually the file named after the theme. Upload that file. Kits and starter sites go through their own importers.

    WordPress theme installer error saying the theme is missing the style.css stylesheet
    Attempting to install an entire download bundle rather than the standalone theme archive triggers the missing stylesheet error. · Source: support.17thavenuedesigns.com

    When a template is the right choice for a business site

    A template is the right call when the site is standard: a handful of service pages, an about page, a contact form, maybe a blog or a small shop. Automattic’s guidance for agencies (May 2025) puts the line in a sensible place. Ready-made themes suit simpler sites, tight budgets and short deadlines. Custom builds earn their cost when you need unusual features, specific branding or integrations.

    Practitioners on r/Wordpress give consulting and local service businesses the same advice. Start from a business starter template, replace every piece of content, and change the colours and fonts. Don’t redesign the structure.

    A template stops paying off when you have to fight it on every page. If your booking flow, quote form or product logic is something neither the template nor a common plugin does, you will pay for custom work anyway. On top of that, you will pay to work around a layout you never needed.

    Why your site won’t look like the demo

    The demo is a finished site with someone else’s content in it: professional photos, copy written to fit each box, menus already built. Install the bare theme and you get the design with nothing in it. Import the starter site and you get the sample content, which you then replace piece by piece. Copy that is longer or shorter than the placeholder text changes the layout.

    The second cause is a missing dependency. Many starter designs need a specific page builder. On the Starter Templates support forum, one user found that their favourite template had become Elementor-only. It would not import as a block-editor design. That is common: W3Techs detects Elementor on 31.5% of WordPress sites as of October 2026, so plenty of templates assume you have it. Some builder kits also need the paid version of the builder for certain layouts.

    The third cause is caching. If your changes don’t show, clear the caching plugin, the host’s cache and your browser cache before you decide the import failed.

    How to choose a template for the site you’ll actually run

    Start from the work the site has to do, not from the screenshot. Go through these checks in order. Each one rules out more than the one before.

    1. List the pages and features you need now. Services, contact, bookings, a shop, a portfolio. Cross off any template that only works with a plugin you don’t want.
    2. Decide who will edit the site. A marketer who builds a landing page every week may be happy in a visual builder. An owner who changes opening hours twice a year wants the block editor and as few settings panels as possible. In one r/webdev thread, a developer complained that in all-in-one themes, small changes mean hours of hunting through settings.
    3. Read the dependency list. Which builder does it need? Is the builder free or paid? Which plugins come bundled? A paid builder licence is a recurring cost the template price doesn’t show. The builder also decides how hard it will be to leave.
    4. Check that someone maintains it. Look at the last-updated date, the changelog and whether the support forum gets answers. One agency on r/Wordpress stopped using one-off marketplace themes because some of them disappeared.
    5. Test it with your content. On a staging copy, add your real homepage text, your logo and a typical photo from your phone, then check it on a phone. Speed tests of a bare theme tell you little about a site with forms, analytics and images loaded.
    6. Ask what leaving would cost. When you switch themes, your posts and pages stay. Layouts built with the old theme’s own builder or shortcodes don’t come with you.

    Price is not a quality signal. A free theme is often enough for a brochure site. Pay when you need a specific feature or real support, and check that the feature is in the tier you are buying, not the one above it.

    How to install a template without breaking an existing site

    Import onto a fresh install or a staging copy, never straight onto a live site that already has content. This is the step most people skip, and skipping it is how a quick refresh turns into a rebuild.

    Here is a real case. A user on the WordPress.org forums imported a restaurant starter template into an existing Elementor site. Colours, fonts, layouts and responsive breakpoints changed across pages they had already built. Support explained that the import does not delete content, but the Customizer settings it brings apply to the whole site. The way back is a Customizer backup if you have one, or redoing the settings by hand. Support’s advice for next time was to import on a new install.

    1. Back up files and the database. WooCommerce’s backup documentation says a store keeps its data in two places: the wp-content folder (themes, extensions, media) and the database (products, orders, posts, pages). Back up both, and know where backup plugins fall short before you rely on one.
    2. Make a staging copy through your host, or a fresh install on a subdomain.
    3. Install the theme, plus the builder and plugins the template lists. Nothing else yet. Fewer active plugins means fewer things to go wrong during the import.
    4. Run the import. If it fails, don’t rerun it straight away. Check the theme’s documented PHP requirements, usually memory limit, max execution time and upload size, and ask your host to match them. Also look at any proxy in front of the site. In a ColorMag support thread, the server limits were double the recommended values and the import still failed. Cloudflare was cutting off the request, and bypassing it during the import fixed the problem.
    5. Replace the content and set up the menus. If pages return 404s, re-save Settings > Permalinks.
    6. If you see “There has been a critical error on this website”, that is usually a theme and plugin conflict. Deactivate the plugins, switch to a default theme, then turn things back on one at a time. The guide to a WordPress white screen covers the details.
    7. Move the finished copy to live once it works, not before.
    Starter Templates plugin library of business website templates in WordPress admin
    Browsing the full Starter Templates library shows how entire website layouts and global styles are imported at once, making a staging environment essential before deploying changes live. · Source: startertemplates.com

    Any code changes after that belong in a child theme, so that a parent theme update doesn’t wipe them. The guide to customizing a WordPress template safely covers which layer to edit.

    What a template costs compared with the whole site

    The template is cheap. Folio3’s 2026 cost guide puts a premium theme at $40 to $200, paid once. Add any builder licence or add-ons, which are often billed yearly.

    The site is not cheap. Freshy’s 2026 rate guide prices a 5 to 15 page small-business site at $2,000 to $5,000 from a freelancer and $5,000 to $10,000 from an agency. Folio3 estimates 30 to 50 hours for a freelancer-built brochure site, about $3,000 to $5,000. The gap between those numbers is content, images, setup and testing. A template shortens the design work. It does not write your service pages or take your photos.

    Freelancers should price with that in mind. A template site sold at template prices leaves out the discovery and content work, and that is the part that takes the time.

    What to check after launch

    Check that the structure underneath is as good as the surface. A polished template can hide headings that are really bold paragraphs, or headings picked for their size rather than their order. W3C’s accessibility tips for developers include keyboard access and setting the page language. Both are worth rechecking after any template change.

    A quick pass takes ten minutes. Tab through each main page without a mouse. Confirm that each page has one main heading and that the rest follow in order. Check the site language under Settings > General. Then delete the demo pages, the sample posts and any theme you aren’t using.

    After that, the work is ordinary edits and updates. Read up on how theme updates work and fail, especially for themes bought outside WordPress.org. If you would rather describe those edits than make them yourself, SiteSelf handles small-business site updates through chat on the site you already have, though it refuses pages owned by Elementor, Divi or Beaver Builder, which is one more reason to know what your template runs on.

    Frequently asked questions

    What is the difference between a WordPress theme and a template?

    A theme controls the design of the whole site and installs under Appearance > Themes. “Template” is looser. It can mean a starter site imported by a plugin, a page-builder kit, or a layout for a single page. Business buyers usually mean a whole pre-designed site, which in practice is a theme plus imported starter content.

    Will importing a starter template delete my content?

    Usually not. Your posts and pages stay. What changes is the global design: colours, fonts, layout and breakpoints can switch across the whole site. That is why the import belongs on a fresh install or a staging copy.

    Should I pick a multipurpose theme or an industry-specific one?

    There is no measured answer. Multipurpose themes with large starter libraries tend to get updates for longer, which is why some agencies have moved to them. They also carry features you won’t use. Whichever you choose, the maintenance record and the dependency list matter more than the niche on the label.

    Can I change my template later?

    Yes, and your content comes with you. Layouts built with the old theme’s builder, shortcodes or custom widgets don’t, so expect to rebuild the homepage and any designed landing pages. Do the switch on staging first.

    Does a template affect speed and SEO?

    It is one factor. Plugins, image sizes, scripts and hosting count just as much. Feature-heavy themes load more CSS and JavaScript than a simple site needs, so a lighter base gives you more room. Test your real pages, not the theme’s demo.

    What should a WooCommerce store check in a template?

    Check that the theme declares WooCommerce support, then test the product, cart and checkout pages with your own products on staging. Back up the database before any theme change, because orders and products live there.

  • Layout and design of a website on WordPress

    Key takeaways

    • On a block theme, design lives in Appearance > Editor. Styles set colours, type and layout for the whole site. Templates set the layout of a page type. The page itself holds only its content.
    • Editing a shared template, such as WooCommerce’s Single Product template, changes every page that uses it. Find the layer and how far it reaches before you edit anything.
    • When a live page stops matching the editor, regenerate the builder’s CSS first. Then clear the plugin, host or CDN and browser caches, and test in a private window. This fixes many cases but not all of them.
    • Some baselines are fixed numbers: text contrast of 4.5:1 (3:1 for large text), content that reflows at 320 CSS pixels, and Cumulative Layout Shift below 0.1.
    • Builders like Elementor store spacing and visibility separately for each device. Fixing desktop does not fix the phone.

    A WordPress site rarely has one place where its look lives. A page’s header might come from a template, its colours from global Styles, its spacing from a page builder and its final look from whatever CSS file the cache decided to serve. That is why “just change the layout” can take five minutes on one site and an afternoon on another.

    This article covers two things. First, what a good layout does for the people using it. Second, where each part of that layout is controlled on WordPress, so you can change it on purpose and fix it when it breaks. If you already know the basics of editing pages in WordPress, this is the layer underneath.

    What layout and design decide on a page

    Layout is order and arrangement: what appears first, what sits next to what, and what happens to that arrangement on a narrow screen. Design is the visual system on top: type, colour, spacing, imagery. Visitors feel both as one thing. Either the page answers their question quickly or it doesn’t.

    Practitioners on r/marketing, r/smallbusiness and r/woocommerce give much the same advice. Make the offer clear on the first screen. Show proof, such as real photos and reviews. Keep each page focused on one next step. Design for the phone first. Cut animation and video that make people wait. That advice is consensus, not measured conversion data, and most of it is about structure and copy rather than visual polish.

    Some of it can be measured. The W3C’s guidance on contrast asks for a ratio of at least 4.5:1 between text and background, or 3:1 for large text. The WCAG reflow criterion expects content to work at a width of 320 CSS pixels without scrolling in two directions, except where a two-dimensional layout is needed. Google’s Core Web Vitals treat a Cumulative Layout Shift below 0.1 as good. That metric measures how much things jump around while the page loads, so it is a layout number as much as a speed number.

    One more check. Headings that only look like headings, such as bold, large paragraph text, give screen readers and search engines no structure. A page can look fine and still be broken underneath. This often happens on sites where content is pasted in from documents by several editors over the years.

    Where a WordPress site’s layout actually lives

    Start by finding out which kind of theme you run. WordPress.org’s documentation says the Site Editor only exists when a block theme is active. If Appearance shows an Editor item, you have a block theme. If it shows Customize instead, you have a classic theme, and design settings live in the Customizer, the theme’s own options panel or a child theme.

    On a block theme, the layers look like this:

    LayerWhat it controlsWhere you change itHow far a change reaches
    Global StylesColours, typography, content width, spacing defaultsAppearance > Editor > StylesEvery page
    TemplatesThe layout of a page type: single post, page, product, archive, 404Appearance > Editor > TemplatesEvery page using that template
    Template partsHeader, footer, other shared regionsAppearance > Editor > Patterns or Template partsEvery template that includes the part
    Page contentBlocks inside one pageThe page editorThat page
    Page builderThe page’s layout, in the builder’s own data and CSS filesThe builder’s editorThat page, or the builder’s global settings
    Plugins and cachesExtra CSS, optimised or combined files, cached copiesEach plugin’s settings, your host, your CDNAnything they touch
    WordPress Site Editor Styles panel controlling global layout and design
    The Global Styles panel centralizes site-wide design settings, letting you manage typography, colors, and layout across every page in one place. · Source: developer.wordpress.org

    WordPress.org describes the Styles panel as the place that sets the overall look and layout of a site at a global level. Change the body font there and every page changes. Change it inside one paragraph block and only that block changes, and it will ignore future global edits. Most “inconsistent design” comes from many small one-off overrides like that. Our article on why a font change is not showing walks through one common case.

    Why a shared template edit changes every page

    WooCommerce’s documentation is blunt about this. Editing a template changes the layout for every page, post or product that uses it. Move the price below the gallery in the Single Product template and you have moved it on every product in the store. That’s usually what you want. It isn’t what you want when you meant to change one product.

    The reverse problem is just as common. Someone tries to change the header on one page, edits that page and finds no header to edit, because the header lives in a template part. Before you edit anything, ask two questions: which layer owns this element, and how many pages use that layer? Our guide to customizing a WordPress template safely covers assigning a different template to a single page.

    Why the live page stops matching what you designed

    Support threads on wordpress.org and Reddit point to the same few causes, roughly in this order of how often they come up. That ranking comes from how often people report each one, not from a survey, but it is the order worth checking in.

    1. Stale generated CSS or a cache serving old files

    Page builders write CSS to files. Elementor’s sit in /wp-content/uploads/elementor/css/, one per post plus a global file. Caching plugins, your host, a CDN and the browser can each keep serving an old copy, or a cached page can point at a CSS file that no longer exists. The result is a page that looks unstyled, half-styled or styled with last week’s design.

    The fix Elementor documents, in this order:

    1. Take a backup.
    2. In wp-admin, open Elementor’s Tools screen and run Clear Files & Data (labelled Regenerate Files in older versions).
    3. Clear your caching plugin’s cache, then your host’s or CDN’s cache.
    4. Load the page in a private browser window, logged out.
    Elementor Tools screen with Clear Files and Data for fixing website layout
    Using the Clear Files and Data tool forces Elementor to regenerate outdated stylesheets before downstream caches take over. · Source: elementor.com

    The most common mistake is doing step 2 without step 3. The builder makes fresh files, but cached pages still point at the old ones. In the wordpress.org thread “Site look and feel is gone”, an OceanWP site lost its styling across every page and the host blamed the theme. A missing set of Elementor assets after a URL change turned out to be the cause, and regenerating them fixed it. The owner noted that the button was not where anyone would think to look.

    Optimisation features can be the cause in their own right. One LiteSpeed Cache user reported that turning off its CSS and JS optimisation fixed their layout only for about a day. Deactivating the plugin fixed it for good, at the cost of speed. If your layout breaks after caching settings change, turn off the CSS optimisation options (combine, minify, unused CSS, critical CSS) one at a time to find the one responsible.

    2. A plugin, theme or version conflict, often right after an update

    If the layout broke when something updated, suspect a conflict. WooCommerce’s conflict-testing guide sets out the standard method: switch to a default theme, deactivate other plugins, then reactivate them one at a time until the problem comes back. Reactivating everything at once tells you nothing.

    Doing that on the live site changes what visitors see. The Health Check & Troubleshooting plugin avoids this: its troubleshooting mode disables plugins and switches the theme for your logged-in session only. A staging copy works too. Also read the changelogs of the builder and its add-ons. A known bug that a newer version fixes beats regenerating files ten times.

    3. A setting that only applies to one device

    When a page is fine on desktop and broken on a phone, the cause is usually a setting that only applies on mobile. Elementor’s mobile troubleshooting guide points to margins under Advanced > Layout, which are stored separately for each device, and to visibility settings that hide elements on some screens. Fixed pixel widths are the other usual suspect: a 600px-wide box cannot fit a 390px-wide screen.

    Switch the editor to the failing device view and fix that breakpoint specifically. Prefer percentage or flexible widths. Then check on a real phone. Previews are close, but not the same.

    Elementor mobile responsive view showing device-specific website layout settings
    Elementor allows designers to toggle section visibility exclusively for mobile screens without affecting desktop viewports. · Source: elementor.com

    4. The change went into the wrong layer

    Sometimes nothing is broken. A global style is overriding a page setting, or a page override is ignoring a global one, or a theme file is overriding the template you edited. Go back to the table above and trace which layer owns the element.

    When to stop and get help

    Stop when the standard steps have failed twice. In one 2026 wordpress.org thread, an Elementor and LiteSpeed site on Hostinger kept returning 404 errors for CSS files. The breakage moved from page to page through repeated purges and regenerations. Cases like that need someone who can read server logs, check file permissions on the uploads folder and compare plugin versions.

    Error messages tell you which direction to look. “Preview Could Not Be Loaded” is an Elementor editor problem. A 500 error is a server or PHP problem, not a spacing problem. “Broken theme and/or stylesheets missing” means the theme upload or install went wrong. A 404 on a post-1234.css file means a generated CSS file is missing.

    How to keep a layout consistent as the site grows

    Sites drift. New editors paste content, campaigns add one-off sections, plugins add their own buttons in their own colours. Three habits slow this down.

    Change the global setting first. If every button needs to be darker, change the button style in Styles or the theme’s settings, then remove the one-off overrides that now look wrong. Don’t fix forty pages one at a time.

    Build repeated sections once. A pricing row, a call to action or an FAQ block that appears on many pages belongs in a synced pattern or template part. Then one edit updates every copy. It takes longer the first time and saves time every time after that.

    Check structure, not just looks. A short review every quarter catches most drift: real headings in order, contrast on new colours, forms usable on a phone, nothing jumping as the page loads.

    The bigger decision is whether to refine or redesign. Refine when the theme supports your content, URLs work and the problems are hierarchy, spacing, mobile behaviour or tired images. A rebuild is worth its cost and risk when the theme stops you doing the job, templates have become impossible to maintain or the builder’s output is too heavy to fix. Our article on theme customization that survives updates covers the middle ground.

    What changes when an agent makes the layout edit

    Most layout work is small: a darker button, tighter mobile spacing, a section moved above another. The process around it is not. You find the right layer, check how many pages it affects, make the change, clear the caches and confirm it on the live page. With an agent, you describe the outcome and the agent does those steps.

    Example request: “On the Services page the contact button sits below a huge image on phones. Move the button above the image on mobile and make the button colour match the one on the homepage.”

    On a block-theme site, SiteSelf would work out whether the button and image sit in the page content or in a template. It would say what is about to change and whether that change can be undone. If the colour lives in global Styles, it would say that changing it there affects every button, and offer to apply it to that page only. After the change it fetches the live page, checks that the new order and colour are in what is served, and reports in chat what changed. The work is recorded.

    Access depends on where the change lives. Content, template and Styles work runs through the SiteSelf Connector plugin from the WordPress.org directory. Edits to theme files, child-theme CSS or anything on the server need hosting (SSH) access.

    There are limits. Pages owned by Elementor, Divi or Beaver Builder are refused at the moment of work, with the reason, so builder pages stay with the builder. The check is a fetch of the page and a plain-language report, not a screenshot or a test on real devices, so look at the page on your own phone too. Nothing runs on a schedule: the agent works when you ask. The page on website edits through chat shows what this kind of request covers. Larger visual work, such as new typography or brand colours across the theme, is covered under design changes on your existing site.

    Frequently asked questions

    Do I need a theme if I use a page builder?

    Yes. The theme still controls the templates and global styles around the builder’s content, such as the header, footer, archives and default fonts. Its CSS can also clash with the builder’s. That is why Elementor’s conflict tests use its minimal Hello theme or a default WordPress theme.

    Is the block editor or a page builder better for layout?

    It depends on who maintains the site and how complex the layouts are. Published benchmarks from 2023 onward generally show block editor pages lighter than Elementor pages, but setups vary and no single ranking holds. If you have no builder yet, see how far the Site Editor and patterns get you first.

    Why does my site look different when I’m logged in?

    Many caching setups skip the cache for logged-in users. You see the current version while visitors get an older cached copy. Always check changes in a private window while logged out.

    Can I change my layout without touching code?

    On a block theme, mostly yes. Styles, templates, template parts and patterns are all edited visually in Appearance > Editor. Classic themes depend on what the Customizer and theme options expose. Anything beyond that means a child theme and some CSS or PHP.

    How do I hide something on mobile without hurting the page?

    Hide decoration, not substance. Content that matters on desktop, like prices, contact details and key text, should still be there on a phone. Search engines index the mobile version, and visitors on phones need the same answers.