Give your WordPress site its first task.
Connect the site you already have, add your agent to Slack or Telegram, and tell it what you need.
Connect your siteStart with 500 free credits. No credit card needed.
Theme customization in WordPress is not one task. It is a choice about which layer holds the change: theme settings, CSS, a child theme, or a plugin. Pick the wrong layer and the change either disappears at the next update or takes the site down with it.
A change written straight into a parent theme’s footer.php lasts until the next theme update replaces that file. A change made in the Customizer lasts until you switch themes. A change made inside a page builder lasts until you stop using the builder. Theme customization in WordPress is not one task. It is a decision about which layer holds the change and how long you need it to hold.
Two things go wrong, and they look different from each other. Either the change vanishes, quietly, weeks later during an update. Or the change takes the front end down now, with a critical error naming a file you have never opened. The methods below are ordered by how much they can break, and the diagnosis section is ordered by how often each cause actually turns up.
If what you want is the step-by-step for working in theme files themselves, that is covered separately in the guide on how to edit themes in WordPress. This piece is about choosing the layer and recovering when the change does not stick.
The single best architectural rule from practitioners is short: presentation belongs in the theme, behaviour belongs in a plugin. If a tracking snippet, a shortcode, a custom post type or a form handler lives in functions.php, it dies the day someone changes theme. That is not a theme update problem, and a child theme does not solve it.
| What you are changing | Where it belongs | What it survives |
|---|---|---|
| Logo, colors, menus, site identity | Theme settings: the Customizer, or Styles in the Site Editor | Updates to the same theme. Not a theme switch. |
| One spacing fix, a hover state, a scoped tweak | Additional CSS, or per-block custom CSS | Updates. Additional CSS is stored per theme. |
| Typography, spacing and color as a system | theme.json in a child theme, or Styles in the Site Editor | Updates, and new pages inherit it. |
| Template markup, WooCommerce product layout | A child theme, overriding only the file you need | Updates, but you now own that file forever. |
| Behaviour that must outlive the theme | A small site-specific plugin or a snippets plugin | Theme updates and theme switches. |
| The theme fights you at every step | A different theme, or a rebuild | Nothing. This is the expensive answer, so be sure. |
The working heuristic: use the least powerful tool that solves the problem. A promotional button color does not need a template override. A publisher standardising article typography across every template does need a system, not thirty one-off rules. Solving the same design problem three different ways in three places is how maintenance debt starts.
Classic themes are customized at Appearance then Customize. WordPress.org’s documentation describes the Customizer as arriving in WordPress 3.4, with sections including Site Identity, Colors, Menus, Widgets and Additional CSS, and a live preview before you publish. Themes add their own sections here too, often under a name like Theme Options.
Block themes are customized at Appearance then Editor. WordPress.org’s documentation says the Site Editor is only available when a block theme is installed and active. That single sentence answers the most common confusion in this whole subject: if Appearance then Customize is missing, you are almost certainly on a block theme, and the settings you are hunting for are in Styles or in a template.

Be ready for the block model to feel less inspectable than it looks in marketing. Experienced builders report the same short list of frustrations: block boundaries are hard to see without hovering, the code editor fills with inline styles and JSON-like data, changing something as small as a block background color can leave escaped CSS variable names elsewhere, and selecting blocks lags while the canvas re-renders. The common responses are the old ones, a child theme plus custom CSS, or a move to a page builder. The WordPress developer blog’s February 2026 post lists per-block custom CSS among the changes arriving with WordPress 7.0, which takes some pressure off the second choice.
Page builders are a real option for marketing pages and a real dependency everywhere else. Support threads show builder features that cannot be fully switched off because no option or hook exists, plugin updates that add dashboard menu items nobody asked for, and a version bump breaking icons in the Customizer. None of that makes those products unreliable. It does mean your design work becomes coupled to that plugin’s release schedule.
WordPress’s Theme Handbook describes a child theme as a way to modify an existing theme without directly editing that theme’s code, and walks through creating the folder, creating style.css, activating it, then loading the stylesheet and using functions.php. Two details do the actual work: the Template line in the child’s style.css header has to match the parent theme’s folder name exactly, and the parent stylesheet should be enqueued from functions.php rather than pulled in with @import.
The safeguard is also a failure source. Practitioners report improperly linked child themes and wrong wp-content permissions as recurring reasons customizations do not apply, alongside files uploaded to the wrong installation. If your child theme “does nothing”, check the parent folder name, the file paths, and whether the upload actually reached production before you rewrite any CSS.
Keep the copying minimal. Override one template, not the parent’s whole structure. Every duplicated file stops receiving the parent developer’s bug fixes and markup changes the moment you copy it. Prefer hooks and filters where the parent theme exposes them. For stores, WooCommerce’s developer docs cover overriding templates through a theme and keep a separate page on fixing outdated templates, which is the mechanism that tells you when a copied file has drifted behind the plugin.
Existing modifications first, child theme second. The sequence practitioners recommend is: document or back up what has already been changed, restore the original theme, create the child theme, then reapply the customizations inside it. Budget hours for this, not minutes. And do not do it live on a site taking orders. Staging that mirrors production is the one operational rule the community data agrees on without argument.
The same symptom has at least five causes, and they are not equally likely. Work down the list rather than guessing.
!important on top of an unidentified conflict makes the eventual fix harder. The isolation process is written out in more detail in the guide to WordPress plugins that are not working.allow_url_fopen cannot be fixed inside the theme. Builder vendors send people to their host for exactly these checks. If you have isolated the fault to none of the above, escalate rather than keep editing CSS.
If the dashboard itself is unreachable after an update, rename wp-content/plugins in the host’s file manager to get back in, then restore the folder and deactivate plugins individually. Do not edit files in /wp-admin or /wp-includes, and do not patch core as a first response. Those changes are undone by the next core update and hide the real cause in the meantime.
There is no defensible published price range, and anyone quoting one is quoting a forum comment. What community threads do agree on is the shape of the waste. Very cheap work returns in revision loops, sometimes five rounds of them. Expensive work may include strategy, responsive testing, integrations and project management that never appear on the invoice as line items. Price alone does not tell you which one you bought.
The workflow that reduces the risk on both sides: pay for an audit, write down the design changes you want with a mockup, then ask for a fixed price against that spec. Clear specifications cut iteration more than any hourly rate negotiation does.
Two purchase decisions deserve more scepticism than they get. A commercial theme that looks close to your design can still be expensive, because you end up paying a toll against its structure, CSS, templates and hooks on every change. And a theme generated by AI to save the cost of a licence is only a saving if you can personally read, debug and update the code through PHP and WordPress version changes. A theme can look finished while quietly accumulating technical debt.
The reason a small design change costs what it does is rarely the change. It is the coordination: describing it, finding someone, waiting for the queue, reviewing a staging link, deploying. Changing the button color on a services page should not need three people and a window.
Example request: “Our services page buttons are the old teal. Change them to brand navy #12224A everywhere they appear, and tighten the gap between the page heading and the first section on mobile.”
SiteSelf works on your existing WordPress site through chat. For that request it would find where the button color is actually defined, global styles, a theme setting, or a stylesheet rule, apply the change in that layer rather than pasting an override, say what is about to change and whether it can be undone before it acts, then fetch the changed page and report in plain language what it did and what it checked. The work is recorded. Content and settings work goes through the SiteSelf Connector plugin from the WordPress.org directory; touching theme files, CSS files or templates needs hosting access over SSH. That kind of WordPress design change through chat is the same category of task described above, just without the queue.
The honest limits matter as much. Verification today is a fetch of the changed page and a written report, not a screenshot and not a test on real devices, so a mobile spacing change still deserves your own look on a phone. Pages owned by a visual page builder such as Elementor, Divi or Beaver Builder are refused at the moment of work, with the reason given. Analytics and Search Console are not written to. Work happens on request, not on a schedule. Cost is credit-based, and the details sit on the pricing page.
You are most likely running a block theme, where customization moves to Appearance then Editor. WordPress.org’s documentation says the Site Editor is only available when a block theme is installed and active, and the reverse holds too: many block themes register no Customizer sections. Switching to a classic theme brings the Customizer back, which is a diagnostic, not a recommendation.
For colors, fonts and spacing, Styles in the Site Editor saves to the database and survives theme updates, so no. For a changed template file, a theme.json override or custom PHP, yes, a child theme is still the place to put it. Anything that must survive switching to a different theme belongs in a plugin either way.
Run the same cache sweep first, including any CDN, and check on the device in a private window rather than a resized desktop browser. Then check whether a breakpoint rule or a block visibility setting is hiding the element at that width. If both come back clean, watch the save request in the Network tab, because a change that never saved looks identical to one that is cached.
Only if you can inspect, debug and update the code yourself. The risk is not the first screenshot, it is maintaining the code through PHP version changes, WordPress releases and a fatal error six months later. Practitioners who tried it often report going back to a dependable starter theme because it was easier to keep running.
No, and this is the strongest warning in the community data. Build and test on a staging environment that mirrors production, and take a confirmed backup before any conflict testing. On WooCommerce, override only the templates you need in a child theme and use hooks for smaller changes, then check the plugin’s outdated-template report after each WooCommerce update.
Additional CSS is fine for a handful of scoped rules and it is easy to undo, but it is stored per theme and it becomes unreadable past a few dozen lines. Once the CSS is long enough that you would want comments and version control, move it into the child theme’s stylesheet. Content-level tweaks that only affect one page belong in the page itself, which the guide on editing pages in WordPress covers.
Explainers
“Hello bar for WordPress” points at three different things: a hosted campaign service, a WordPress plugin that only carries that service’s script, and the whole category of announcement bar plugins. Picking the wrong one is why so much of the advice you find does not apply. Once the bar is installed, the failures are ordinary WordPress failures, and cache is the first suspect.
Read article ›Troubleshooting
A saved font change that still shows the old typeface is usually one of five things: a cache you did not clear, a setting changed at the wrong scope, theme CSS that outranks yours, a font registered but never loaded on the front end, or a font file that never arrives. Each has a different check. Two minutes in your browser’s developer tools tells you which one you have.
Read article ›How-to Tutorials
Editing a page in WordPress is four clicks until it isn’t. The hard part is knowing whether the thing you want to change lives in the page, in a template, in a pattern, in a page builder’s own data, or in WooCommerce. This walks through the edit itself, then the checks that tell you whether your change actually reached the live site.
Read article ›Connect the site you already have, add your agent to Slack or Telegram, and tell it what you need.
Connect your siteStart with 500 free credits. No credit card needed.