Skip to content Skip to sidebar

This thread is resolved. Here is a description of the problem and solution.

Problem:
You are using The Events Calendar plugin with WPML to translate events from Hungarian to German and encountering a 404 error when trying to access the German version of single events. The error occurs inconsistently and resolves temporarily after accessing the Hungarian version. Clearing the cache causes the issue to reoccur.
Solution:
We recommend testing the issue using only the parent theme, such as Twenty Twenty-Five, to rule out any conflicts with custom functions in your current theme. Additionally, please deactivate all other plugins except for WPML and The Events Calendar to see if the issue still persists. This will help determine if there is a specific interaction causing the problem.

If these steps do not resolve the issue or if the solution seems outdated or irrelevant to your case, we highly recommend checking related known issues at https://wpml.org/known-issues/, verifying the version of the permanent fix, and confirming that you have installed the latest versions of themes and plugins. If the problem continues, please open a new support ticket for further assistance at WPML support forum.

This is the technical support forum for WPML - the multilingual WordPress plugin.

Everyone can read, but only WPML clients can post here. WPML team is replying on the forum 6 days per week, 22 hours per day.

Tagged: 

This topic contains 9 replies, has 1 voice.

Last updated by Andrey 7 months ago.

Assisted by: Andrey.

Author Posts
October 7, 2025 at 8:09 am #17462548

always-betterM

Background of the issue:
I am trying to use The Events Calendar plugin with WPML to translate events from Hungarian to German. The issue can be seen on this page: hidden link

Symptoms:
I encounter a 404 error when trying to access the German version of single events. The error occurs inconsistently, resolving after accessing the Hungarian version first. Deleting the cache causes the issue to reoccur.

Questions:
Why do I get a 404 error when accessing the German version of single events?
Why does accessing the Hungarian version first resolve the issue temporarily?
How can I prevent the 404 error from reoccurring after clearing the cache?

October 7, 2025 at 8:12 am #17462569

always-betterM

Hey. I would very much appreciate it if the "open ticket button" actually opened up a ticket, instead of redirecting me to a braindead AI assistant. If I wanted to talk to ChatGPT, I think I'd be capable of using my browser's search bar on my own, instead of coming to your support page.

This is the actual report I wrote up, as opposed to the AI summary your system threw together:
The Events Calendar 404 error when trying to access translated event single

Use The Events Calendar plugin with WPML

hidden link

My site's default language is Hungarian, and I set up a translation for German. I encountered a problem with accessing the single events on the German version.
Sometimes, upon trying to open the german version of an event, I get a 404 error. This is not due to a faulty link - the permalinks work fine, and acessing it from the admin yields the same result. However, if I first open the Hungarian version, then navigate to the german or enter its link manually, then it starts working. It's as if the URL wasn't being properly rewritten (while the permalink was) until the Hungarian version of an event is first opened from the front-end. However, sometimes the german versions work from the get-go. I see no consistency in when the singles work and when they throw an error, however, the errors occur quite frequently.
Upon deleting my cache (I use WP Super Cache, Redis Object Cache and Autoptimize for caching) the whole thing repeats - so the German version of the event singles become inaccessible again until their Hungarian counterparts are opened.

October 7, 2025 at 2:20 pm #17464181

Andrey
WPML Supporter since 06/2013

Languages: English (English ) Russian (Русский )

Timezone: Europe/Kyiv (GMT+03:00)

Thank you for contacting WPML support.

I’ve opened the link multiple times and switched between different versions, but I wasn’t able to reproduce the issue you’re experiencing.

If you’re using an Apache server, could you please share the contents of your .htaccess file at the moment when you get the 404 error for the event? This file is located in the root directory of your WordPress installation.

October 8, 2025 at 9:25 am #17466526

always-betterM

Hi

I still see the issue occuring. It is inconsistent, with some events working from the get-go, others giving me a 404, only to then properly work a few minutes later, then going back to an error again. I'll send you a list of links here which currently produce the error for me:

hidden link
hidden link
hidden link
hidden link
hidden link
hidden link
hidden link

Also, one thing: as I said, switching between the versions actually "fixes" the issue - after visiting a post's default Hungarian version, the German version works until the cache is flushed.

I turned off the caching plugins to prevent them from interfering with any testing you do.

Here's the content of .htaccess:

FileETag none

# ----------------------------------------------------------------------
# Expires headers (for better cache control)
# ----------------------------------------------------------------------

# These are pretty far-future expires headers.
# They assume you control versioning with filename-based cache busting
# Additionally, consider that outdated proxies may miscache
# hidden link

# If you don't use filenames to version, lower the CSS and JS to something like
# "access plus 1 week".

<IfModule mod_expires.c>
ExpiresActive on

# Your document html
ExpiresByType text/html "access plus 0 seconds"

# Media: images, video, audio
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"

# CSS and JavaScript
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
</IfModule>

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

# Specify a Vary: Accept-Encoding header
<IfModule mod_headers.c>
<FilesMatch ".(js|css|xml|gz)$">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>

<IfModule mod_expires.c>

# Enable expirations
ExpiresActive On

# Default directive
ExpiresDefault "access plus 1 month"

# My favicon
ExpiresByType image/x-icon "access plus 1 year"

# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"

# CSS
ExpiresByType text/css "access plus 1 month"

# Data interchange

ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rdf+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"

ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/ld+json "access plus 0 seconds"
ExpiresByType application/schema+json "access plus 0 seconds"
ExpiresByType application/vnd.geo+json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"

# Favicon (cannot be renamed!) and cursor images

ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 week"

# HTML

ExpiresByType text/html "access plus 0 seconds"

# JavaScript

ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"

# Manifest files

ExpiresByType application/manifest+json "access plus 1 week"
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"

# Media files

ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/bmp "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"

# Web fonts

# Embedded OpenType (EOT)
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType font/eot "access plus 1 month"

# OpenType
ExpiresByType font/opentype "access plus 1 month"

# TrueType
ExpiresByType application/x-font-ttf "access plus 1 month"

# Web Open Font Format (WOFF) 1.0
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType font/woff "access plus 1 month"

# Web Open Font Format (WOFF) 2.0
ExpiresByType application/font-woff2 "access plus 1 month"

# Other

ExpiresByType text/x-cross-domain-policy "access plus 1 week"

</IfModule>

<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml

# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>

# RewriteCond %{HTTPS} off
# RewriteRule ^(.*)$ hidden link{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} off
RewriteCond %{HTTPS_HOST} !^wunderbar.tesztfejlesztes.hu$ [NC]
RewriteRule ^(.*)$ hidden link [L,R=301]

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# BEGIN LiteSpeed
# A `BEGIN LiteSpeed` és az `END LiteSpeed` sorok közötti tartalom dinamikusan lett létrehozva, és csak WordPress szűrők módosíthatják. E kettő sor közötti bármilyen kézi módosítás el fog veszni.
<IfModule Litespeed>
SetEnv noabort 1
</IfModule>
# END LiteSpeed

October 8, 2025 at 1:11 pm #17467358

Andrey
WPML Supporter since 06/2013

Languages: English (English ) Russian (Русский )

Timezone: Europe/Kyiv (GMT+03:00)

Thank you for providing more information.

I’ve opened each link multiple times, but I still haven’t been able to replicate the issue. This time, I didn’t switch between languages to ensure I followed the exact same steps as you described.

To investigate further, I’ll need to request temporary access (wp-admin and FTP) to your site where the issue can be reproduced. When you log in to leave your next reply, you’ll find the necessary fields below the comment area. The information you provide is private — only you and I will be able to see it.

Let’s see if I can reproduce the issue while I’m logged in.

October 9, 2025 at 8:33 am #17469891

Andrey
WPML Supporter since 06/2013

Languages: English (English ) Russian (Русский )

Timezone: Europe/Kyiv (GMT+03:00)

Thank you for the details.

I will take a look and let you know.

October 9, 2025 at 2:52 pm #17471912

Andrey
WPML Supporter since 06/2013

Languages: English (English ) Russian (Русский )

Timezone: Europe/Kyiv (GMT+03:00)

I examined this further throughout the day by clicking the links you provided, but I still couldn’t reproduce the issue (whether logged in or not).

Without making any changes, just in case, I re-saved the permalinks in Settings → Permalinks and also updated the Event plugin permalink settings.

Maybe you can try to identify specific steps to replicate the issue so I can assist you more effectively?

October 9, 2025 at 5:52 pm #17472365

always-betterM

Unfortunately, the problem still persists. Please carefully perform the check as described.

Should I send you a video so that you take our case seriously and understand the problem? Perhaps we should hold a joint online meeting?

October 9, 2025 at 5:56 pm #17472429

always-betterM

First go to this address:

hidden link

Then open this hidden link

After that just open some random events from the list... and they will be add 404 error on first GERMAN language load sometimes. After you open the HUNGARIAN version it will work again...

Please control our issue because we need invariably help.

Thanks in advance!

October 9, 2025 at 6:51 pm #17472627

Andrey
WPML Supporter since 06/2013

Languages: English (English ) Russian (Русский )

Timezone: Europe/Kyiv (GMT+03:00)

Thank you for providing the steps. By following them, I was able to reproduce the issue.

I noticed that your custom theme includes several custom functions, some of which appear to be related to WPML and The Events Calendar plugin. Have you tried testing the issue using only the parent theme Twenty Twenty-Five?

Additionally, please try testing with only WPML and The Events Calendar plugins activated to see if the issue persists.

Let me know the results.