  Version 4.9.5

  June 10, 2026

    Compatibility

      * WordPress 7.0 — Fixed the Classic Translation Editor field layout, the post-language-change modal, and the language switcher block so they render correctly on WordPress 7.0.
      * PHP 8.4 and 8.5 — Cleaned up deprecation notices and silent warnings so sites on the latest PHP versions stay clean in their error logs.
      * Elementor — Strings sent to the Advanced Translation Editor no longer include inactive fields.

    Moving and re-registering a site

      * When you move a site to a new domain, WPML now applies the Copy with migration code option automatically, dismisses stale migration notices the moment the URL changes, and shows the migration banner as soon as the alias domain is reset.
      * Restored the explanation shown when the alias domain is automatically reset, and re-enabled the manual alias-domain entry on the Troubleshooting page so site registration is reachable again on sites upgrading from 4.9.4.
      * Stale cloned site flags are now cleared on upgrade so a partially-completed migration wizard no longer blocks subsequent runs.
      * Redesigned the refund / unregister / replace-site-key notice as a clearer three-card layout, making it easier to remove WPML from a site you no longer use.

    Advanced Translation Editor

      * Slug changes made in the Advanced Translation Editor are now correctly saved back to the translated post.
      * The lock-contention response is now a proper HTTP 423 status instead of HTTP 500, so retries from the translation service work correctly.
      * Translation jobs are now sent in priority order — items at the top of your queue are translated first.
      * Translations downloaded from the Advanced Translation Editor now appear in the language switcher immediately, without needing a cache flush.
      * Translation sync error screens now include support instructions and direct links to the relevant help articles.
      * The Translation Management job log was rebuilt on a new storage backend with much richer logging, making it easier to diagnose translation issues.

    Translation Management dashboard

      * The post edit screen is significantly faster on sites with orphan posts created in secondary languages — the per-render orphan-translations check has been replaced with a much lighter query, so editing posts in Gutenberg no longer pauses on large sites.
      * Removed unused legacy tracking code and a duplicate JavaScript global from the front of the admin.

    URLs, slugs, language switcher

      * Plain-URL to permalink conversion now preserves the port number.
      * The translated URL is generated the first time when translating with the native WordPress editor — no more translate twice to see the slug.
      * Fixed translation of links at the bottom of toolset archive pages.
      * An empty translation ID no longer accidentally creates a stray post during in-progress Classic Editor translations.
      * Private posts no longer get redirected to a media post when they share a slug.
      * Private posts now appear on the secondary-language blog page.
      * Future-status posts now show the language switcher again.
      * Language switcher block: fixed flag size in the preview area, and added explicit width and height attributes on flag images for better Core Web Vitals.

    Menus, caches, and miscellaneous

      * Sites running an object cache no longer lose translation menu items after Sync Menus — the term cache is now invalidated correctly.
      * ACF Gallery Block: duplicating a page now duplicates all images, not just the first one.
      * Cleared a false-positive SQL-injection warning from third-party security scanners.
  Purchase

  Version 4.9.4

  May 19, 2026

    WPML 4.9.4 brings full compatibility with WordPress 7.0, addressing several changes to the block editor and core functionality introduced in this release.

    WordPress 7.0 Compatibility

      * The block editor now stays in modern iframe mode on WPML-enabled sites. WordPress 7.0 makes the fully iframe-based editor the new standard. On sites running an older version of WPML, the editor would silently revert to legacy mode whenever WPML was active. The Language Switcher and Navigation Language Switcher blocks have been updated to fully support Block API version 3, keeping the editor in modern mode as expected.
      * Navigation Language Switcher “open on click” now works correctly on WordPress 7.0. WordPress 7.0 changed how the Navigation block stores this setting. WPML now reads the updated value correctly, so submenus respect the behaviour you configured.
      * New WordPress 7.0 block content is now translatable. Three elements introduced or restructured in WordPress 7.0 were not appearing in the WPML translation editor. All three are now fully translatable: Icon block accessibility labels (aria-label), Navigation overlay close button text, and Tab block labels.
      * Fixed block editor warnings and styling issues on WordPress 7.0. WPML’s internal code for registering block assets has been updated to use current WordPress APIs. Block descriptions are now plain strings as WordPress 7.0 requires, and CSS loads correctly inside the iframe editor. All changes are backward compatible to WordPress 6.3.
      * Fixed PHP deprecation notices in server logs. A PHP function deprecated in WordPress 7.0 has been replaced with the modern equivalent throughout WPML’s codebase.

    Other Fixes

      * Fixed a blank white screen on the WPML Settings and Translation Dashboard pages in wp-admin.
      * Fixed slow loading on the Menu Sync page.
  Purchase

  Version 4.9.3

  May 6, 2026

    WPML 4.9.3 brings a wide range of fixes and improvements — from site migration and string translation to performance, admin usability, and editor compatibility.

    Features

      * New filter hook for developers to return translated user meta values
        WPML now intercepts calls to get_user_meta() and returns the translated value for the current language. This is useful when displaying user profile fields (e.g. job title, bio) on multilingual sites. To enable this behaviour, add the following to your theme or plugin:

        add_filter( 'wpml_translate_get_user_meta', '__return_true' );
      * New filter hook to globally disable all WPML email notifications
        WPML sends automatic emails from several internal components (translation job assignments, overdue job reports, batch summaries, etc.). Previously there was no official way to suppress them — developers had to rely on workarounds inspecting the call stack. This new hook provides a single, supported way to disable all WPML emails at once:

        add_filter( 'wpml_send_email_notification', '__return_false' );

        Or selectively, based on email type and recipient:

        add_filter( 'wpml_send_email_notification', function( $send, $email_type, $recipient ) { if ( $email_type === 'overdue_jobs_report' ) { return false; } return $send; }, 10, 3 );

        This is particularly useful on staging or development environments where you want to prevent emails from reaching real users.

    Improvements

    Migration and Setup

      * Safer and More Reliable Migration Process
        WPML now makes it safer and easier to move or copy a site from one domain to another. If something goes wrong during the migration, the wizard stays visible so users can retry, with clearer messages, better logging, and guidance on where to find the migration code. WPML also automatically fixes misconfigured alias domains, removes the unsafe “Move” option, and improves performance for sites using the Classic Translation Editor.
      * Added a new option to reset the WPML Setup Wizard when it gets into a corrupted state.
      * WPML now notifies the translation service when a site key is unregistered.

    Performance

      * Reduced redundant language filtering calls on sites with many ACF fields for better performance.
      * Removed outdated WP Super Cache integration code that was no longer needed.

    Admin and User Experience

      * Unlocked WPML settings are now visually indicated in the admin interface.
      * String Translation dashboard filters now show labels and default to Frontend strings.
      * Clarified how Media Translation settings affect images and featured images.
      * The notification about jobs that cannot be finished now links directly to the Translation Dashboard.

    Fixes

      * Some posts containing Base64-encoded data were not being sent for translation
        In a previous release, we started blocking some posts because they contained Base64-encoded data, to prevent issues during the translation process. However, this also blocked some posts that could actually be translated, or where the Base64 content could simply be ignored. We’ve updated how WPML handles Base64-encoded content — posts that can be safely translated are no longer blocked. A more precise validation approach is planned for an upcoming release.
      * Fixed an issue with WPML blocks causing the Gutenberg editor to use an outdated rendering mode.
      * Fixed an issue with Payments & Maintenance tab failing to load on sites with WordPress installed in a subdirectory.
      * Fixed a PHP warning triggered when search queries contained array parameters.
      * Fixed an issue with Full Site Editing category templates not applying to translated pages.
      * Fixed an issue with translator assignment failing after a database restore or site migration.
      * Fixed an issue with active subscriptions incorrectly shown as expired on the last day of the billing cycle.
      * Fixed an issue with String Translation failing to load translation files due to domain name casing conflicts.
      * Performance improvements when the Classic Translation Editor is selected.
      * Fixed an issue with memory exhaustion errors on sites where user accounts had accented characters in their username.
      * Fixed an issue with minimal custom field values being lost during the translation process.
      * Fixed an issue with page preview slowness or timeouts on resource-limited servers when WPML is active.
      * Fixed an issue with REST API requests using non-pretty URLs being incorrectly redirected.
      * Fixed an issue with CSS changes in the WPML development project not being compiled correctly.
      * Fixed a privacy policy link showing the original language page title instead of the translated one.
      * Fixed an issue with the alias domain notice showing the same URL twice during site migrations.
      * Fixed internal links using Cyrillic or non-Latin characters not being translated correctly.
      * Fixed an issue with category and taxonomy terms not triggering the re-translation process correctly.
      * Fixed an issue with browser language redirect not working correctly when a root page is set.
      * Fixed an issue with the Classic Translation Editor causing PHP warnings and translation status loss on reload.
      * Fixed an issue that was allowing posts to be accessed via the wrong category URL.
      * Fixed an issue where String Translation file scanning was causing database corruption on large sites.
      * Fixed an issue with the translation feedback button displaying incorrectly on Arabic (RTL) pages.
      * Fixed a menu synchronization performance issue causing slowness or crashes on large multilingual sites.
      * Fixed an issue with the Automatic Translation Payment & Maintenance tab failing to load on some sites.
      * Fixed an issue with the development site banner failing the WCAG accessibility contrast requirements.
      * Fixed an issue with internal links using www vs. non-www variants not being automatically translated.
      * Fixed an issue with several WPML interface strings not being translated due to incorrect domain assignments.
      * Fixed an issue with translated Elementor templates not displaying correctly on the frontend.
      * Fixed an issue with Media Translation causing images to appear duplicated in the Media Library.
      * Fixed an issue with the Save button remaining disabled when clearing translation context fields.
      * Fixed an issue with website UUID mismatches causing translation service connectivity problems.
      * Fixed WCAG accessibility issues with the legacy language switcher and SSO iframe.
      * Fixed an issue with translator search causing heavy database load and CPU spikes.
      * Fixed the word count calculation for translation jobs failing on Nginx/Kubernetes environments.
      * Fixed a PHP 8.3 compatibility issue causing the Translation Dashboard to freeze.
      * Fixed an issue with alias domain setting not being automatically removed when a domain mismatch is detected.
      * Fixed a vulnerability in a WPML JavaScript file reported by SonarQube.
      * Fixed an issue with class name causing issue in analytics code that could cause failures on Linux servers.
  Purchase

  Version 4.9.2.1

  April 21, 2026

    Fixes

      * Fixed a security issue in WPML’s Translation Feedback feature. Heads-up: we’re retiring this feature in the next major WPML release because the usage has been very low.
      * Fixed an issue where WooCommerce customers could experience a slow checkout and see a false payment error, even though their order had been successfully placed and their payment had gone through.
      * Fixed an issue where users could see a false error when copying their site during the migration process, even though the operation had completed successfully in the background.
  Purchase
