{"id":34587,"date":"2025-11-02T18:53:54","date_gmt":"2025-11-02T16:53:54","guid":{"rendered":"https:\/\/uhty.com.ua\/?p=34587"},"modified":"2025-12-14T19:12:05","modified_gmt":"2025-12-14T17:12:05","slug":"woodmart-wp-rocket-pagespeed-and-beer-heineken-remember-how-fast-the-site-was-after-consulting-with-the-reviewers","status":"publish","type":"post","link":"https:\/\/uhty.com.ua\/en\/woodmart-wp-rocket-pagespeed-and-beer-heineken-remember-how-fast-the-site-was-after-consulting-with-the-reviewers\/","title":{"rendered":"WoodMart with WP Rocket and PageSpeed and Heineken beer. Notes on how I sped up my site after midnight AI advice"},"content":{"rendered":"<p>Notes on the phone (night, WordPress, WoodMart, WP Rocket, PageSpeed and some beer)<br \/>\n22:31<br \/>\nVisited on mobile PageSpeed. 56\/100.<br \/>\nOf course. Great. I love pain.<br \/>\n22:38<br \/>\nI ask AI: what to do with WoodMart?<br \/>\nHe confidently answers:<br \/>\n\u2014 \u201cEnable Galaxy Mode in WP Rocket \u2192 Performance \u2192 Experimental.\u201d.<br \/>\nMe: Where? There is no such thing.<br \/>\n\u2014 \u201cYes, there, next to Instant Warp.\u201d.<br \/>\nI look at the monitor, the monitor looks at me. The beer looks at all three of us.<br \/>\n22:47<br \/>\nOk, let&#039;s go another way.<br \/>\nThe AI says: \u201cIn WoodMart, disable Mega Defer Styles in Theme Settings.\u201d.<br \/>\nInvented button #2 for the evening.<br \/>\n23:02<br \/>\nDecided to &quot;get serious&quot;:<br \/>\ninsert some kind of \u201clightweight\u201d code into functions.php that \u201cautomatically removes all unused CSS that contradicts the dignity of your site.\u201d.<br \/>\nThe AI adds: \u201c100% is working.\u201d<br \/>\n\u2026<br \/>\nAfter \u201cupdate file,\u201d the admin breathes like an asthmatic on a climb.<br \/>\nThe site is alive, but it&#039;s hurting. Me too.<br \/>\n23:19<br \/>\nA heroic voice in my head: \u201clet\u2019s write our own plugin \u2014 rocket-boost-super-critical.\u201d.<br \/>\nFile created. Activated.<br \/>\nThe plugin doesn&#039;t do anything, but it sounds awesome. But the site started loading worse.<br \/>\nMagic.<br \/>\n23:33<br \/>\nI&#039;m taking it all back.<br \/>\nThe AI says, \u201cOh, you\u2019re doing great! That\u2019s how it should have been.\u201d<br \/>\nThank you, Captain Obviousness.<br \/>\n23:48<br \/>\nWoodMart: enable \u201cDisable Gutenberg CSS\u201d, \u201cDisable emoji\u201d, \u201cLoad Google Fonts Locally\u201d...<br \/>\nThe AI says: \u201cBe sure to enable HyperBoost Ajax Killer.\u201d.<br \/>\nI wipe away a tear. This doesn&#039;t exist.<br \/>\n00:06<br \/>\nWP Rocket.<br \/>\n\u2014 \u201cEnable Remove Unused CSS.\u201d<br \/>\nTurning it on.<br \/>\n\u2014 \u201cAnd also Delay JS.\u201d.<br \/>\nTurning it on.<br \/>\n\u2014 \u201cAnd Preload to everyone, everything and everywhere.\u201d<br \/>\nI don&#039;t turn it on. I still love life.<br \/>\n00:21<br \/>\nCLS jumps through the WoodMart slider and product swatches.<br \/>\nAI: \u201cJust add min-height: auto-important;\u201d<br \/>\n\u2026<br \/>\nauto-important sounds like a shamanic spell \u2014 but unfortunately, it&#039;s not CSS.<br \/>\n00:37<br \/>\nI came up with my own checklist with a trigger:<br \/>\n\u2014 If the item sounds like \u201cspace regime\u201d \u2014 don\u2019t touch it.<br \/>\n\u2014 If the AI gives a 100% guarantee \u2014 don&#039;t touch \u00d72.<br \/>\n\u2014 If you want to insert code into functions.php at 00:37 \u2014 go get a beer.<br \/>\n00:52<br \/>\nI do normal things that aren&#039;t trendy, but work:<br \/>\n\u2014 I disable unnecessary WoodMart widgets (ajax search live, if not needed)<br \/>\n\u2014 I remove the carousel, put a static image for the mobile hero<br \/>\n\u2014 in WP Rocket I add an exception to jquery.min.js, wc-cart-fragments, woodmart-theme.min.js from Delay JS<br \/>\n\u2014 I collect critical CSS of pages (not the entire site with one knife)<br \/>\n\u2014 fonts locally, font-display: swap<br \/>\n\u2014 preload on the main font and main image of LCP<br \/>\n01:11<br \/>\nMobile PageSpeed jumped to 84.<br \/>\nAI writes: \u201cI told you so.\u201d<br \/>\nYou didn&#039;t say anything, buddy. I just stopped believing you.<br \/>\n01:28<br \/>\nI look out the window \u2014 the moon, the Lexus, silence.<br \/>\nAnd I think: sometimes the best optimization is to turn off non-existent checkboxes and return to what really makes an impact.<br \/>\n01:44<br \/>\nTomorrow I&#039;ll finish the LCP on the hero picture, and it will be 90+.<br \/>\nToday is Heineken and sleep.<br \/>\nShi, don&#039;t write to me until morning.<\/p>\n<p><em><strong>After going through all this agony, non-existent modes and AI advice, I realized one thing: only basic, proven things work. Here is my final, proven WoodMart and WP Rocket optimization plan that took me from the \u201cswamp\u201d of 56 points to the clean PageSpeed zone. No magic and \u201cHyper Turbo Mode\u201d<\/strong> <\/em><\/p>\n<h2>Why PageSpeed is poor on mobile at WoodMart<\/h2>\n<ul>\n<li>Too heavy a hero (slider, video, large images) \u2192 bad LCP.<\/li>\n<li>Default Google Fonts with blocking loading \u2192 FOIT\/long display.<\/li>\n<li>WooCommerce\/theme JS interfering with caching and causing delays.<\/li>\n<li>CLS via sliders, carousels, missing <code>width\/height<\/code> or <code>aspect ratio<\/code>.<\/li>\n<\/ul>\n<h2>Optimization plan (WoodMart + WP Rocket) \u2014 short and to the point<\/h2>\n<h3>1) LCP: Make the first screen easy<\/h3>\n<ul>\n<li>On mobile \u2014 <strong>static banner instead of slider<\/strong> (seriously, this is half the battle).<\/li>\n<li>Fix the height of the hero container: minimum ~<code>min-height: 60vh;<\/code> or ask <code>aspect ratio<\/code>.<\/li>\n<li>Hero image in WebP\/AVIF, without \u201cgiants\u201d: 900\u20131200px on the long side for mobile.<\/li>\n<li>Add a preload to the LCP image (only one, the main one):<br \/>\n<code>&lt;link rel=\"preload\" as=\"image\" href=\"\/path\/hero.webp\" imagesrcset=\"\/path\/hero-900.webp 900w, \/path\/hero-1200.webp 1200w\" imagesizes=\"(max-width: 600px) 100vw, 600px\"&gt;<\/code><\/li>\n<\/ul>\n<h3>2) WP Rocket: Safe Settings That Give You + Points<\/h3>\n<ul>\n<li><strong>Cache<\/strong>: Mobile cache is enabled.<\/li>\n<li><strong>File Optimization \u2192 CSS<\/strong>: Minify. <em>Remove Unused CSS<\/em> \u2014 test. If something breaks, it&#039;s better to provide critical CSS manually (example below).<\/li>\n<li><strong>File Optimization \u2192 JS<\/strong>: Minify + Delay JS. Add <strong>exceptions<\/strong> (so as not to break the thread\/topic):\n<ul>\n<li><code>jquery(.min)?.js<\/code><\/li>\n<li><code>wc-cart-fragments<\/code><\/li>\n<li><code>woodmart-theme(.min)?.js<\/code><\/li>\n<li>Payment\/analytics scripts that should work immediately<\/li>\n<\/ul>\n<\/li>\n<li><strong>Media<\/strong>: Lazyload for images and iframes. <u>Not<\/u> LCP picture.<\/li>\n<\/ul>\n<h3>3) WoodMart: turn off the unnecessary, take the useful<\/h3>\n<ul>\n<li><strong>Performance<\/strong>: local download of Google Fonts, <code>font-display: swap<\/code>, minimize the number of outlines (2\u20133 weights).<\/li>\n<li>Disable modules you don&#039;t use (live search, wishlist\/compare, heavy carousels).<\/li>\n<li>For a mobile header, there are fewer elements and animations.<\/li>\n<\/ul>\n<h3>4) Fonts: fast and without \u201cblinking\u201d<\/h3>\n<ul>\n<li>Put woff2 locally and add a preload to the main file:<br \/>\n<code>&lt;link rel=\"preload\" as=\"font\" href=\"\/fonts\/Inter-regular.woff2\" type=\"font\/woff2\" crossorigin&gt;<\/code><\/li>\n<li>CSS connection with <code>font-display: swap<\/code> (so that the text does not disappear):\n<pre><code>@font-face{ font-family:&quot;Inter&quot;; src:url(&quot;\/fonts\/Inter-regular.woff2&quot;) format(&quot;woff2&quot;); font-weight: 400; font-style: normal; font-display: swap; }\r\n<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>5) WooCommerce: Little things that save seconds<\/h3>\n<ul>\n<li>Add a Delay JS exception for <code>wc-cart-fragments<\/code> (the basket and mini-basket will breathe evenly).<\/li>\n<li>Disable features that you don&#039;t need (quick view, comparison, unnecessary widgets).<\/li>\n<\/ul>\n<h3>6) Images, CDN and lazyload<\/h3>\n<ul>\n<li>Convert to WebP\/AVIF, control the size (no more than 2\u20135 MB on mobile).<\/li>\n<li>Check <code>srcset<\/code>\/<code>sizes<\/code>, so that the phone does not drag desktop images.<\/li>\n<li>Lazyload for everything except LCP. For banners\/placeholders, add transparent stubs to avoid jumping.<\/li>\n<\/ul>\n<h3>7) Anti-CLS: stable layout without jumps<\/h3>\n<ul>\n<li>For images - required <code>width<\/code>\/<code>height<\/code> or <code>aspect ratio<\/code>.<\/li>\n<li>Sliders\/carousels: set container height, disable autoplay on mobile.<\/li>\n<li>Fonts \u2014 only from <code>swap<\/code> and close in metric fallback.<\/li>\n<\/ul>\n<h3>8) Critical CSS: point by point, not \u201cknife all over the site\u201d<\/h3>\n<p>Create a short critical CSS for the main (hero, header, first screen) and add it to :<\/p>\n<pre><code>\/* \u043f\u0440\u0438\u043a\u043b\u0430\u0434 \u043c\u0456\u043d\u0456\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0448\u0430\u0440\u0443 *\/\r\nheader{min-height:64px}\r\n.hero{min-height:60vh; display:grid; place-items:center}\r\n.hero h1{margin:0 0 .5rem}\r\n.btn{display:inline-block; padding:.8rem 1.2rem}\r\n<\/code><\/pre>\n<p>All other styles can run asynchronously. This way you save LCP and visual readiness.<\/p>\n<h3>9) What exactly not to do at midnight \ud83d\ude42<\/h3>\n<ul>\n<li>Do not insert untested \u201cmagic\u201d snippets into <code>functions.php<\/code>.<\/li>\n<li>Do not enable \u201cRemove Unused CSS\u201d + aggressive combinations at the same time if the site is large and heterogeneous.<\/li>\n<li>Don&#039;t believe advice about non-existent toggles in plugins (yes, AI sometimes fantasizes).<\/li>\n<\/ul>\n<h2>A small pre-release checklist<\/h2>\n<ul>\n<li>LCP on mobile &lt; 2.5 s on the main templates (main, category, product card).<\/li>\n<li>CLS &lt; 0.1 (static dimensions, no \u201cjumping\u201d carousels).<\/li>\n<li>Delay JS with exceptions for critical scripts (jQuery, cart fragments, theme scripts).<\/li>\n<li>Fonts locally + preloaded + <code>swap<\/code>.<\/li>\n<li>Image grid works, but LCP doesn&#039;t <em>not<\/em> lazy.<\/li>\n<\/ul>\n<p><em>In short, in human terms: less magic \u2014 more control. We calmly remove everything unnecessary, fix the first screen and let the page \u201cbreathe\u201d without heavy scripts. Yes, sometimes you want to click on the non-existent \u201cHyper Turbo Mode\u201d checkbox, but it\u2019s better to double-check LCP and Delay JS exceptions.<\/em><\/p>\n<hr \/>\n<p><strong>Need a helping hand?<\/strong> If it&#039;s hard to figure out all this, just contact us for a free consultation - they will explain in detail, and if you wish, they will do everything for you to make your website really fly:<br \/>\n<a href=\"https:\/\/speedwppro.com\/uk\/bezplatnyi-audyt\/\" rel=\"nofollow\">https:\/\/speedwppro.com\/uk\/bezplatnyi-audyt\/<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Notes on the phone (night, WordPress, WoodMart, WP Rocket, PageSpeed and some beer) 22:31 I went to the mobile PageSpeed. 56\/100. Of course. Great. I love pain. 22:38 I ask the AI: what to do with WoodMart? It confidently answers: \u2014 \u201cEnable Galaxy Mode in WP Rocket \u2192 Performance \u2192 Experimental\u201d. Me: where? There is no such thing. \u2014 \u201cThere, there, next to Instant\u2026<\/p>","protected":false},"author":1,"featured_media":34588,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[402],"tags":[],"class_list":["post-34587","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-rizne"],"_links":{"self":[{"href":"https:\/\/uhty.com.ua\/en\/wp-json\/wp\/v2\/posts\/34587","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uhty.com.ua\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/uhty.com.ua\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/uhty.com.ua\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/uhty.com.ua\/en\/wp-json\/wp\/v2\/comments?post=34587"}],"version-history":[{"count":0,"href":"https:\/\/uhty.com.ua\/en\/wp-json\/wp\/v2\/posts\/34587\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/uhty.com.ua\/en\/wp-json\/wp\/v2\/media\/34588"}],"wp:attachment":[{"href":"https:\/\/uhty.com.ua\/en\/wp-json\/wp\/v2\/media?parent=34587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uhty.com.ua\/en\/wp-json\/wp\/v2\/categories?post=34587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uhty.com.ua\/en\/wp-json\/wp\/v2\/tags?post=34587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}