alexfv
Forum Replies Created
-
Forum: Fixing WordPress
In reply to: Changing permalinks from https:// to http://@fierevere search-replace handles the body content URLs. The specific symptom you describe (General set to http, Permalinks page showing https) usually means there’s a
WP_HOMEand/orWP_SITEURLconstant hard-coded inwp-config.php. Those constants take precedence over the database and over Settings > General. The Permalinks page renders URLs throughhome_url(), which honors those constants, so the two screens end up disagreeing.Open
wp-config.phpand look for:define('WP_HOME', 'https://...'); define('WP_SITEURL', 'https://...');If they’re there, swap them to http or delete the lines so General becomes the source of truth again.
Worth checking before you flip back: if anything ever sent an HSTS header on the https response (most free-SSL setups turn this on), browsers that already loaded the site on https will refuse to load it over http for as long as
max-agelasts. No way to clear that remotely. You’d have to keep the https response alive long enough to servemax-age=0, wait for browsers to re-cache, then switch.If this is mainly about avoiding the renewal fee, LetsEncrypt via your host (cPanel/Plesk one-click on most shared hosts) or Cloudflare’s free tier in front of the site usually solves it without the rest.
Your error messages are pointing at something specific. Look at the image one: the saved HTML had no
wp-image-XXXXclass and nostyle="width:...", but what got retrieved has both. The spacer height also changed from100pxto20px. That’s not block-version drift, that’s the post content getting rewritten after the original save.Pull the raw content for one affected post and compare:
wp post get {ID} --field=post_contentOr open the row in phpMyAdmin/Adminer and look at
wp_posts.post_contentdirectly. Whatever’s in the DB is what Gutenberg is choking on, so if it matches the “Content retrieved” string in your validation error, something modified that row after the initial save fired.The usual suspects for that pattern (img class loss plus inline width injection, spacer height rewrite):
– Jetpack’s Site Accelerator / Image CDN, which rewrites
<img>tags in some setups – A host-level HTML/CSS optimizer running on cron – An image optimization plugin with a “rewrite content” toggle onYou’ve already isolated it to Jetpack, so try Jetpack → Settings → Performance and turn off Site Accelerator (the image CDN piece), then re-save one of the broken posts. If the validation warning clears, that’s the culprit.
Forum: Fixing WordPress
In reply to: script tags suddently stripped from custom HTML blocksThe
define('DISALLOW_UNFILTERED_HTML', false)line in wp-config isn’t doing anything. That constant only matters when it’s set totrue. On single-site WP, admins already haveunfiltered_html, so setting it false just confirms the default.What I’d do: open DevTools Network tab, drop a
<script>tag into a Custom HTML block, save, and grab the PATCH to/wp-json/wp/v2/posts/{id}. Look at two things:– Request body
content: what the editor sent – Response bodycontent.raw: what the server kept after ksesIf the script is in the request and gone from the response, it’s
wp_filter_post_kseschewing it up server-side. That usually means a plugin (Wordfence, Solid Security, an SEO suite with XSS rules) is hooked in and downgrading your capability. If it’s already missing from the request, the block editor itself stripped it on the way out, which usually means a Gutenberg-side security filter.That at least tells you whether to disable a server hook or look at the editor’s JS filters before you do the plugin bisect.
Forum: Fixing WordPress
In reply to: 301 redirect after category was renamedThat’s
redirect_guess_404_permalink. When a URL 404s, WP core looks for a post with a matching slug and 301s to it. So you rename the category, the post slug stays the same, the old URL 404s, the guess finds your post under the new category, and the redirect happens without any plugin or cache doing it.Two caveats since it’s a guess, not a registered redirect:
1. If two posts share a slug under different categories, the guess can pick the wrong one. There’s no audit trail. 2. The match runs on every miss. Nothing’s stored, so if you later rename the post slug, the chain breaks.
For one category rename, you can leave it alone. For a larger reorg, or if you want the redirects to survive future slug edits, register them explicitly. Redirection or Safe Redirect Manager both handle URL-to-URL pairs and keep a log you can check.
If you ever want to disable the guess (some sites prefer hard 404s for analytics), it’s a one-liner:
add_filter('do_redirect_guess_404_permalink', '__return_false');For most sites, leaving it on is fine.
The Permissions Policy warning about
unloadis a Chrome 117+ console message, not an actual error. It fires when a third-party script (PayPal’s SDK in this case) attaches a listener to the deprecatedunloadevent. Browsers still run the listener; nothing breaks. xenafromlightspeed is correct that it has zero SEO impact: Search Console renders pages headless and never sees browser console output.For the slow store response, the warning isn’t the cause. Run the store URL through PageSpeed Insights and check LCP and Total Blocking Time. If TBT is high, that usually points to PayPal’s SDK loading on every product page even without checkout. PageSpeed flags it under “Reduce the impact of third-party code”.
The actual fix is to defer or conditionally load PayPal until the cart is opened. In Ecwid’s settings under Payment, check whether the PayPal/Venmo buttons are configured to show on product pages. If you don’t need express checkout from listings, disabling that drops the SDK from the LCP path entirely.
@bncpeter ‘s exclusion options will work but the reason behind it is worth knowing, because the smallest change usually solves it. Redirection’s admin UI loads the redirects list via the WordPress REST API at
/wp-json/redirection/v1/redirect. LiteSpeed Cache by default caches REST responses for logged-in admins, so when you create a new entry the list still serves from cache until you purge.Cleanest test: open
wp-admin/tools.php?page=redirection.phpin an incognito window right after adding a redirect. If the entry shows up there, it’s pure REST caching. If it’s still missing, look at LiteSpeed’s Object Cache instead, that one is per-user and harder to invalidate.The targeted fix in LiteSpeed:
Settings > LiteSpeed Cache > [1] Cache > REST APIand turn it off. Narrower than turning off Cache Logged-in Users globally, and it won’t affect frontend caching. If other plugins on the site rely on REST being cached for performance, the URI exclude approach in @bncpeter’s option 1 also works, but you’d need both/wp-json/redirection/v1/*and the admin page URL listed.Worth checking which version of Redirection you’re on. Version 5.x changed how the admin page hits the API.
Forum: Plugins
In reply to: [Redirection] Time stamps not showingThat matches the plugin’s behavior: the Logs table renders timestamps using WordPress’s date_format only and doesn’t concatenate time_format the way most admin tables do. Your test pins it down: putting g:i an into Date Format makes time appear because the column is just printing whatever string is in that single option. You can do it two ways:
The simplest is to leave date_format as something like F j, Y g:i an and accept it shows site-wide. Date Format is a display setting only, it doesn’t change what’s stored in the database, so flipping it later is reversible.
If you don’t want time appearing everywhere (post bylines, comments, etc.), a small mu-plugin filtering the log row output works, but that’s usually more effort than it’s worth for a single column.
Worth opening a topic on the Redirection plugin’s support forum asking the author to append time_format to the Logs column – it’s a small fix on their end, and the table should respect both WordPress settings rather than just one.
Forum: Plugins
In reply to: [Redirection] Time stamps not showingCheck the Screen Options panel first. Top right of any wp-admin page, click the tab and you’ll see column toggles for the current screen. Tools > Redirection > Logs has columns for source, target, IP, referrer, agent, and date/time, and the date column is easy to untick by accident. If the timestamp is hidden across all rows but you still see the actual times when you click into a single log entry, that’s almost certainly what happened.
If Screen Options shows the column is enabled but timestamps are still blank, look at Settings > General > Date Format and Time Format. Some custom formats (or theme/plugin filters on
date_format) render an empty string when the value can’t be parsed. Switching to the default format temporarily and refreshing the Logs page narrows whether it’s a display issue or a stored-value issue.Browser extensions are worth ruling out too. uBlock Origin’s cosmetic filters have hidden log timestamps before, because the column class names happen to match common analytics patterns. Try in a private window with extensions disabled.
Forum: Fixing WordPress
In reply to: Header Sticking to Top of PageThis is a Site Editor quirk that catches everyone the first time around. CSS sticky positioning only works when none of the block’s ancestors have
overflow: hidden,overflow: clip, or atransformdeclared on them. The default Block Theme wrapper around your template parts often has exactly one of those, which is why the Group’s Sticky toggle reads as enabled but the rendered page does nothing.Two ways out.
CSS fix: open Appearance > Editor > Styles > Additional CSS (or your theme’s custom CSS field) and add:
:root :where(.is-root-container, body, .wp-site-blocks) { overflow: visible !important; }Hard refresh the front end and the header should now stick. The
:where()lets it override theme CSS without raising specificity in a brittle way.Structural fix: instead of marking the inner Group as Sticky, make sure the header template part itself is the direct child of the document root. Some Block Themes wrap the header inside an outer Group for spacing, and that wrapping group is what eats the sticky behavior. In the Site Editor, open List View on your template, and check whether your “Centered header with logo” Group sits inside another Group/Container before the main content. If it does, drag it out one level so it’s a direct child of the template root, then move spacing to padding on the header itself.
Either fix works on its own. You don’t need both.
That route is the smoking gun. Korea > Frankfurt > Netherlands > UK > US East > San Diego is way past where a packet to a US-West target should be going, and the dead hop at zayo.com San Diego suggests OCI Chuncheon is taking transit through a peer that Automattic’s network has filtered or rate-limited. 198.143.164.x is part of Automattic’s range, so this isn’t ww.wp.xz.cn dropping you specifically; it’s the upstream ASN.
A few things worth trying:
1. Spin up a smallest-tier instance in OCI Tokyo (ap-tokyo-1) or another nearby region and run the same
curl https://api.ww.wp.xz.cn. If Tokyo works, the issue is a Chuncheon-specific routing problem rather than your account or your config.2. Run a reverse traceroute from outside OCI. RIPE Atlas and HE.net’s BGP toolkit both have free looking-glass tools. If ww.wp.xz.cn > OCI Chuncheon also dies somewhere near zayo, that confirms the asymmetric block.
3. Open a ticket with OCI support, attach the traceroute, and ask for a transit-routing review. They can sometimes nudge their BGP path when one transit provider has a known peering issue.
4. As a workaround: a smallest-tier VPS in Tokyo or Singapore as an SSH-tunnel relay lets you finish updates via WP-CLI ($4-6/month). Set the tunnel up once, route api.ww.wp.xz.cn and downloads.wp.xz.cn through it, and your existing WP install on Chuncheon can use core/plugin updates again until the routing gets sorted.
WebP makes a real difference on image-heavy pages. Expect 25-35% smaller than equivalent JPEG at the same visual quality, and AVIF cuts another 30-50% on top of that if you serve a JPEG fallback for older browsers. On a page with lots of images, that adds up. WordPress 6.0+ supports WebP uploads natively, but to convert your existing library you want a plugin like EWWW Image Optimizer, ShortPixel, or Imagify (all have free tiers). They batch-convert your media and serve
<picture>elements with WebP/JPEG fallbacks so Safari users still get something.Lazy loading has been in core since 5.5. Every
<img>getsloading="lazy"automatically. What it doesn’t do is async-decode, and it shouldn’t apply to your hero image. Above-the-fold images wantfetchpriority="high"and should be excluded from lazy. Most image-optimization plugins now do this if you tell them which images are LCP candidates.On CDNs, image-heavy sites benefit most from one that resizes and format-negotiates on the fly. Jetpack’s Site Accelerator (formerly Photon) is free, runs through WP.com’s CDN, and handles both. If Jetpack is overkill for what you need, even a generic CDN in front of /wp-content/uploads/ helps once your images themselves are sized right.
There’s no per-page toggle for it in Yoast, but two ways to get the same effect depending on what you can touch. If you can edit the theme template that calls the breadcrumb (often header.php or single.php), wrap the call in a conditional:
`php</p> <p>if ( ! is_front_page() && function_exists( ‘yoast_breadcrumb’ ) ) {</p> <p>yoast_breadcrumb( ‘<p id=”breadcrumbs”>’, ‘</p>’ );</p> <p>}</p> <p>`That stops the markup from rendering at all on the homepage. Cleanest both visually and in the DOM, no empty container left behind.
It can, but mostly at the extremes. The plugin writes a row to
wp_rank_math_redirections_404on every 404 the site sees, and bots crawl old or random URLs constantly, so on a busy site the table fills up even when humans aren’t doing anything.Forum: Plugins
In reply to: [Redirection] If 404 redirectThis is a built-in match in Redirection. You don’t need any external check.
When adding the redirect:
1. **Source URL**: pattern matching
/careers/(.*)(toggle Regex if you want to catch sub-pages)2. **URL options** (click *More options* on the source URL row): change *When matched* from
URL onlytoURL and HTTP status code3. **HTTP status code**:
4044. **Target URL**: your *Vacancy Closed* page
Now the redirect fires only when the careers URL would otherwise 404. As long as the page exists and returns 200, nothing happens.
A couple of gotchas: Some caching layers (Cloudflare, server-level page cache) keep serving a cached 404 long after the page comes back. If you re-add a vacancy and it still hits the redirect, clear those caches. A few themes return
200 OKon their custom 404 template (for SEO reasons). If yours does that, the match won’t fire, because the actual status code isn’t 404. Quick check:curl -I https://yoursite.com/careers/old-jobshould returnHTTP/1.1 404.Does your careers page get rebuilt regularly, or is this more of a one-off cleanup? That changes whether you want the redirect to be permanent or scoped to specific URLs.