Why is my WordPress site slow, and is the theme hurting my Core Web Vitals?
In short: On a slow WordPress site the blame rarely sits in one place: a large first image, fonts from another server, CSS files that hold up rendering and scripts added by plugins all stretch LCP together. Start in PageSpeed Insights by checking which element is the LCP and what's flagged as a render-blocking resource. Wiozen Theme loads its fonts from your own server, inlines the design CSS, preloads the front page lead image and doesn't use jQuery; caching and image compression are the job of a plugin and your host.
Measure first: which metric is the problem?
Core Web Vitals are three measurements. LCP (when the largest content element appears) should be under 2.5 seconds, INP (how fast the page responds to a click) under 200 milliseconds, and CLS (layout shift) under 0.1. On news sites and blogs LCP breaks most often, because the largest element is usually the lead photo.
In PageSpeed Insights look at the real-user data section first; the Core Web Vitals report in Search Console shows the same data. The lab score moves a little on every run. Then find the LCP element under diagnostics: if it's an image, look at its size and how late the download starts; if it's a heading, look at fonts and CSS.
How do you tell if the theme is the cause?
To separate the theme's share, turn off all plugins on a staging copy or in maintenance mode and measure the same page again. If the score jumps, the problem is in the plugins, and turning them back on one at a time shows which. If LCP is still long with plugins off, look at the theme and the server.
Typical theme problems are:
- Fonts pulled from another server, which costs the browser an extra connection.
- Several hundred kilobytes of CSS and JavaScript loaded on every page.
- A lazy-loaded lead image, so the browser asks for the image at the top of the screen late.
- Slider or animation scripts loaded even where they aren't used.
What does Wiozen Theme do about these?
Fonts ship inside the theme as woff2 files and load from your server; no request goes to a separate font host. Each font is variable weight, so bold and regular don't need separate files. The files are split into basic Latin and extended Latin, and the browser downloads only what the characters on the page need. A Turkish page needs both because of letters like ğ and ş. Fonts are declared with font-display: swap, so text shows in a fallback font until the real one arrives.
WordPress caps inlined CSS at 20 KB by default. Wiozen Theme raises the cap to 85,000 bytes. The design's stylesheet (31 to 45 KB depending on the design) and the theme's 12 KB base stylesheet then arrive inside the page instead of as separate files, which removes requests that hold up rendering.
When the front page shows your latest posts, the theme preloads the newest post's featured image in the <head> with fetchpriority="high", so the browser starts fetching it before it has read the stylesheets. The lazy-loading flag is removed from the lead image. This is done only for the first lead image; later slides in a slider stay lazy. The Guide design has no images, so there's no preload there.
JavaScript: which script loads when?
The theme doesn't use jQuery. Its only front-end script is front.js, 6.7 KB, loaded with defer so it runs after the page is parsed. The file loads only when the page has a slider, the breaking news strip, the "Print recipe" button or the back-to-top button. The back-to-top button is on by default, so on most sites it loads on every page; switch it off on the Settings tab if you don't want it.
If you turn on the cookie notice, a separate 1.6 KB script is added; if it's off, nothing loads. Dark mode adds a one-line script in the <head> that applies the reader's choice before the page is painted, so a dark page doesn't flash white.
The license status is read from the site's own database on each page load; the theme makes no outside request while a visitor opens a page. The license check runs once a day in the background.
What the theme doesn't do, and what you need to add
The theme doesn't keep a page cache, doesn't compress or convert the images you upload to WebP, and doesn't set up a CDN. For image sizes it uses the sizes WordPress generates (srcset) and adds no image sizes of its own.
- Install a page cache plugin or turn on your host's cache. If server response time (TTFB) is above 600 milliseconds, this comes first.
- Shrink images before uploading. A 1600 pixel wide lead image covers most screens; don't upload a 4000 pixel phone photo as is.
- Generate WebP or AVIF with an image plugin.
- Watch ad code for layout shift (CLS). The theme's ad slots drop off the page when they're empty, but a filled ad that changes height still shifts the page.
- Remove plugins you don't use, especially chat, popup and social sharing plugins that add scripts to every page.
Frequently asked questions
Does using a block theme make a site faster on its own?
No. With a block theme WordPress loads styles only for the blocks on the page, which helps. But image size, caching and plugins decide LCP far more. More in the classic or block theme guide.
Does Wiozen Theme use Google Fonts?
No. Each design's fonts ship inside the theme and load from your server. That also means visitors' IP addresses aren't sent to a font host.
Should I turn on my cache plugin's "combine CSS" option?
There's no need; if you do, measure. The design CSS already comes inlined, and combining sometimes breaks page-specific styles or writes a separate cached file for every page.
If my front page is a static page, is the lead image still preloaded?
The preload only happens when the front page shows your latest posts. On a static front page, place the first image with a Cover or Featured Image block and check that lazy loading is off for it.
For a theme that loads fast, download Wiozen Theme for free, measure once on your staging site with plugins off and compare.