[Eskaliert zum WPML-Entwicklerteam] Deleting string translations are not removed from WP Cache
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.
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);
}
}
```
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.
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.
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.
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.
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.
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
Cookie-Zustimmung verwalten
Wir verwenden Cookies, um unsere Website und Dienste zu optimieren. Ihre Zustimmung erlaubt es uns, Daten wie das Durchsuchen der Website zu verarbeiten. Wenn Sie nicht zustimmen, können einige Funktionen beeinträchtigt werden.
Funktionell
Immer aktiv
Erforderlich für den Betrieb und die korrekte Kommunikation auf unserer Website.
Präferenzen
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistiken
Wir verwenden diese, um die Statistiken unserer Website zu analysieren. Die gesammelten Informationen sind völlig anonym. Der technische Speicher oder Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Einhaltung durch Ihren Internetdienstanbieter oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen in der Regel nicht dazu verwendet werden, Sie zu identifizieren.
Marketing
Diese Cookies verfolgen Ihr Surfverhalten, um für Sie relevante Werbung anzuzeigen.