Skip to content Skip to sidebar

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

Problem:
The client's site does not meet WPML's minimum requirements, WooCommerce Multilingual & Multicurrency is reported as not installed, and sale prices for variable products are not displayed in English.
Solution:
First, we recommend modifying how WPML filters cookies during its REST check. Adjust the method in

WPML\Infrastructure\WordPress\SharedKernel\Server\Application\CheckRestIsEnabled::getCookiesWithoutSessionId

located in

/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/wpml/src/Infrastructure/WordPress/SharedKernel/Server/Application/CheckRestIsEnabled.php

. Replace the method with a version that ignores serialized cookies, allowing the check to pass successfully.

Second, add a Custom WAF Rule in Cloudflare to whitelist the endpoint

/wp-json/wpml/v1/rest/status

. Log in to the Cloudflare Dashboard, navigate to Security → WAF → Custom Rules, and create a new custom rule with the expression

(http.request.uri.path contains "/wp-json/wpml/v1/rest/status")

and set the rule’s Action to: Skip → All remaining custom rules. Clear all caches after this adjustment.

If these solutions do not resolve your issue or seem irrelevant due to being outdated or not applicable 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 persists, please open a new support ticket 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 8 replies, has 0 voices.

Last updated by alexK-25 1 week, 1 day ago.

Assisted by: Bruno Kos.

Author Posts
November 19, 2025 at 6:39 pm #17593228

alexK-25

Background of the issue:
I have recently added warehouse.gr and eshop.warehouse.gr under a CloudFlare paid plan. I am trying to resolve an issue where my site doesn't meet WPML's minimum requirements. When testing through "hidden link", I get 'status':'valid' and 'get_parameters':'valid'. Additionally, WooCommerce Multilingual & Multicurrency is reported as not installed, although it is. I also need to fix an issue with sale prices in variable products for Black Friday. Sale prices are updated in both simple and variable products, but in English, the sale price is only displayed for simple products. The issue can be seen at: hidden link. I expected to see a sale price like in the Greek version: hidden link.

Symptoms:
The site doesn't meet WPML's minimum requirements. WooCommerce Multilingual & Multicurrency is reported as not installed. Sale prices for variable products are not displayed in English, although they are present and displayed in Greek.

Questions:
Why does the site not meet WPML's minimum requirements despite valid status checks?
Why is WooCommerce Multilingual & Multicurrency reported as not installed?
Why are sale prices for variable products not displayed in English?

November 21, 2025 at 8:50 am #17597815

Bruno Kos
WPML Supporter since 12/2018

Languages: English (English ) German (Deutsch ) French (Français )

Timezone: Europe/Zagreb (GMT+01:00)

Hi,

About the prices, can you tell me if you resolved this somehow, or? This is what I see on hidden link and hidden link

As for the minimum requirements notice, we have this:
https://wpml.org/errata/warning-about-wordpress-rest-api-if-non-authenticated-requests-blocked/

Would you be willing to provide me with WordPress and FTP credentials so I could investigate that issue directly?

https://wpml.org/purchase/support-policy/privacy-and-security-when-providing-debug-information-for-support/

I marked your next reply as private so that you can safely add credentials.

prices.jpg
en.jpg
November 24, 2025 at 6:03 am #17602941

Bruno Kos
WPML Supporter since 12/2018

Languages: English (English ) German (Deutsch ) French (Français )

Timezone: Europe/Zagreb (GMT+01:00)

I’m checking this with our second-tier team and will keep you updated.

November 24, 2025 at 10:35 am #17604075

Bruno Kos
WPML Supporter since 12/2018

Languages: English (English ) German (Deutsch ) French (Français )

Timezone: Europe/Zagreb (GMT+01:00)

Can you install https://wordpress.org/plugins/pexlechris-adminer/ so I could check something?

I will check for wpml_notices and will remove it if it is there.

If not, to troubleshoot this problem, I'll install the Duplicator (hidden link) plugin and generate packages for further debugging purposes. I'll ensure to exclude all media files to maintain a minimal package size.

You can find more information about the process here:
https://wpml.org/faq/checklist-before-opening-a-ticket-in-wpml-support/#get-help-from-support

Please confirm if this approach is acceptable to you!

November 24, 2025 at 2:16 pm #17605208

alexK-25

Hi Bruno,

i have installed Ad Miner.
Yes please go on with your approach, it is acceptable. If you need help with anything please let me know.

Best Regards,
Alex

November 25, 2025 at 7:13 am #17606679

Bruno Kos
WPML Supporter since 12/2018

Languages: English (English ) German (Deutsch ) French (Français )

Timezone: Europe/Zagreb (GMT+01:00)

In another case we had, we identified that the issue is caused by an interaction between WPML and any of the plugins that stores serialized data inside cookies. WPML performs an internal requirements/REST check that validates cookie values, and because these cookies are serialized, the check fails and incorrectly reports an error.

We have also escalated this case to our developers so they can work on a permanent fix.

As a temporary workaround, can you try modifying how WPML filters cookies during its REST check by adjusting the following method:

`WPML\Infrastructure\WordPress\SharedKernel\Server\Application\CheckRestIsEnabled::getCookiesWithoutSessionId`

located in:

`/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/wpml/src/Infrastructure/WordPress/SharedKernel/Server/Application/CheckRestIsEnabled.php`

You can replace the method with the following version, which ignores serialized cookies so the check can pass successfully:

private function getCookiesWithoutSessionId(): array {
    $cookies = array_diff_key( $_COOKIE, [ 'PHPSESSID' => '' ] );

    foreach ( $cookies as $name => $value ) {
        // Only keep simple string values
        if ( ! is_string( $value ) ) {
            unset( $cookies[ $name ] );
            continue;
        }

        // Drop cookies that look like raw PHP serialized data:
        // a:..., s:..., O:..., etc. Your example "a:2:{s:6:"search"...}"
        if ( preg_match( '/^[aObis]:\d+:/', $value ) ) {
            error_log(
                sprintf(
                    'WPML_REST_CHECK: Skipping serialized cookie "%s" with value "%s" in REST test.',
                    $name,
                    substr( $value, 0, 100 )
                )
            );
            unset( $cookies[ $name ] );
            continue;
        }

        // Optionally, be extra safe: drop cookies with raw semicolons
        // (they should normally be encoded in HTTP headers).
        if ( strpos( $value, ';' ) !== false ) {
            error_log(
                sprintf(
                    'WPML_REST_CHECK: Skipping cookie "%s" with semicolons in value for REST test.',
                    $name
                )
            );
            unset( $cookies[ $name ] );
            continue;
        }
    }

    return $cookies;
}

Can you try this and let me know if it works in your case?

November 27, 2025 at 11:05 am #17614614

alexK-25

Hi Bruno,

i did what you suggested but did not work unfortunately.
Is there anything else i can try?

Thank you in advance.

Regards,
Alex

November 27, 2025 at 4:13 pm #17615860

Bruno Kos
WPML Supporter since 12/2018

Languages: English (English ) German (Deutsch ) French (Français )

Timezone: Europe/Zagreb (GMT+01:00)

This has been escalated to our 2nd tier team team and may take some debugging time, I'll get back to you as soon as I have any news or questions for you.

December 4, 2025 at 12:38 pm #17634179

Bruno Kos
WPML Supporter since 12/2018

Languages: English (English ) German (Deutsch ) French (Français )

Timezone: Europe/Zagreb (GMT+01:00)

Can you try adding a Custom WAF Rule in Cloudflare to whitelist the endpoint `/wp-json/wpml/v1/rest/status`? So something like this:

1. Log in to the Cloudflare Dashboard and navigate to: Security → WAF → Custom Rules (I believe this is the correct location).
2. Create a new custom rule using an expression similar to:
`(http.request.uri.path contains "/wp-json/wpml/v1/rest/status")`
3. Set the rule’s Action to: Skip → All remaining custom rules.

Clear all the caches after this. Does it still show?

December 4, 2025 at 1:11 pm #17634371

alexK-25

Hi Bruno,

thank you for your help.
The issue is resolved now, the error message stopped!
I get "Great! All WPML requirements are now met. Your site is ready to use WPML."
Thanks again for your time and effort.

Best Regards,
Alex