Navigation überspringen

Dies ist das technische Support-Forum für WPML – das mehrsprachige WordPress-Plugin.

Mitlesen können alle, doch nur WPML-Kunden können hier Fragen veröffentlichen. Das WPML-Team antwortet im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.

Sun Mon Tue Wed Thu Fri Sat
- - 9:00 – 18:00 9:00 – 18:00 9:00 – 18:00 9:00 – 18:00 9:00 – 18:00
- - - - - - -

Zeitzone des Supporters: America/Lima (GMT-05:00)

Schlagwörter: 

Dieses Thema enthält 9 Antworten, hat 2 Stimmen.

Zuletzt aktualisiert von Andreas W. Vor 1 Jahr, 6 Monaten.

Assistiert von: Andreas W..

Autor Beiträge
November 9, 2023 um 2:12 pm #14767989

stephanJ-2

We use Redis as WP Cache in WordPress. There is an issue when deleting string translations that they are still considered as existent by the WP Cache.

Steps to reproduce:
1) Delete the redis cache.
2) Scan selected plugins for strings. (At "Theme and plugins localization")
3) Show string translations & delete some string translations (At "String translation")
4) Re-scan selected plugins for strings. (At "Theme and plugins localization")
5) Show string translations (At "String translation") - the deleted strings do not appear, but re-scanning the plugins should have added them again.

The issue is, that the string is not deleted from the WP Cache when deleted from the database.

To solve this issue I have registered an action for 'wpml_st_before_remove_strings', that does the following:

```
public function removeStringTranslationsFromRedisCache(array $stringIds): void
{
global $wpdb;
$str = wpml_prepare_in( $stringIds, '%d' );
$stringRows = $wpdb->get_results(
"SELECT id, context, domain_name_context_md5 FROM {$wpdb->prefix}icl_strings WHERE id IN ({$str})",
ARRAY_A
);
foreach ($stringRows as $stringRow) {
$group = 'WPML_Register_String_Filter::' . $stringRow['context'];
wp_cache_delete($stringRow['domain_name_context_md5'], $group);
}
}
```

Hope that helps.

November 9, 2023 um 2:21 pm #14768037

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Hallo,

Vielen Dank für Deine Nachricht.

Um dieses Problem und die vorgeschlagene Lösung intern weiterleiten zu können, muss ich dieses Problem zunächst auf einer neuen WordPress-Installation in einem minimalen Setup replizieren können.

Welches Cache Plugin wird hier verwendet?

Mit freundlichen Grüßen
Andreas

November 10, 2023 um 11:36 am #14776021

stephanJ-2

Redis Object Cache Version 2.4.4 (https://wordpress.org/plugins/redis-cache/)

November 10, 2023 um 7:29 pm #14780099

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Hallo,

Ich konnte das Problem replizieren und es löst sich, wenn man vor dem Scannen nach neuen Strings den Redis Cache leert.

Das Leeren des Caches vor oder nach dem Löschen von Strings in String Translation ist im Grunde ein Feature, was man programmatisch im Redis Cache Plugin veranlassen sollte, wenn Strings in WPML gelöscht werden.

Hast Du den Author dazu bereits konsultiert?

Ich werde dazu auch gerne intern an unser Compatilbity Team konsultieren, um von dort eine Meinung einzuholen.

Sobald ich eine Antwort von unserem Team erhalten habe, werde ich mich wieder melden.

Mit freundlichen Grüßen
Andreas

November 13, 2023 um 4:17 pm #14790973

stephanJ-2

Hallo Andreas,

ich bin der Meinung, dass WPML den Cache aktuell sollte und sehe es daher in der Verantwortlichkeit von WPML und nicht im Redis Cache Plugin.

Was meinen Sie mit "den Autor dazu bereits konsultiert"? Sollte der Autor vom Redis Cache Plugin gemeint sein, glaube ich, das wäre dort falsch adressiert.

Ich bin gespannt auf die Meinung vom Team.

Beste Grüße

November 14, 2023 um 5:28 pm #14801253

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Hallo,

Bislang meint das Compatibility Team ebenfalls, dass das Leeren des Caches in dieser Situation vom Cache Plugin aus gesteuert werden sollte.

Zudem kannst Du die von Dir angewendete Funktion mit folgender Hook ersetzen:

add_action( 'wpml_st_before_remove_strings', 'wp_cache_flush' );

Ob das Leeren des Caches i.d.F. in Zukunft in WPML veranlasst werden solllte, wird in einem kommenden Compatibility Meeting beraten.

Wir werden zum sehr bald zu dem Thema eine Errata veröffentlichen.

Mit freundlichen Grüßen
Andreas

November 14, 2023 um 8:51 pm #14802625

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Hallo,

Hier die Errata zum Thema:
https://wpml.org/errata/redis-object-cache-theme-plugin-localization-scan-only-localizes-new-strings-after-clearing-object-cache/

Unsere Partner-Managerin versucht aktuell mit dem Author des Plugin Kontakt aufzunehmen.

Mit freundlichen Grüßen
Andreas

November 16, 2023 um 10:21 am #14824219

stephanJ-2

Hallo, ich habe dort einen Kommentar hinterlassen, dass ich es für keine schöne Lösung halte, den ganzen WP Cache zu löschen. Wir persistieren ja gerade den Cache über Redis, damit wir einen Performanz-Vorteil davon haben. Auch wenn es jetzt nicht die häufigste Aktion ist, eine String Translation zu löschen um sie danach neu zu scannen/hinzufügen, halte ich die Lösung für over the top.

November 16, 2023 um 12:42 pm #14826601

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Hallo,

Das Löschen des Caches ist im Grunde aktuell eine Notlösung.

Das Team berät aktuell sich aktuell zum Thema und dieses wird dann an die Entwickler von WPML übergeben, damit WPML in Zukunft den Obkect Cache besser handhaben kann.

Bis dies der Fall ist, bitte ich um Geduld und darum die Notlösung anzuwenden.

Mit freundlichen Grüßen
Andreas

November 21, 2023 um 4:08 pm #14888993

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Hallo,

Ich schreibe Dir, um mitzuteilen, dass dieses Problem an unsere Entwickler weitergeleitet wurde, um die Ursachen des Problem zu untersuchen und dieses in einer kommenden Version von WPML zu beheben.

Mit freundlichen Grüßen
Andreas