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.

Heute stehen keine Supporter zur Arbeit im German-Forum zur Verfügung. Sie können gern Tickets erstellen, die wir bearbeiten werden, sobald wir online sind. Vielen Dank für Ihr Verständnis.

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

Zuletzt aktualisiert von Marcel Vor 1 Jahr, 9 Monate.

Assistiert von: Marcel.

Verfasser Beiträge
Mai 27, 2022 unter 12:50 pm #11326459

matzeeable

Ähnliches Ticket, jedoch ungelöst: https://wpml.org/forums/topic/duplicate-or-missing-terms-in-get_the_terms/

Ticket-Metadaten:

- Betroffenes Plugin "Real Cookie Banner" (unser Plugin)
- alle Plugins außer Real Cookie Banner deaktiviert
- Standard-Theme aktiv
- WordPress 6.0: Problem tritt wohl erst seit WordPress 6.0 auf, mit < 6.0 scheint es zu funktionieren
- Ich benutze die letzte Version von WPML (4.5.7)
- Standard-Sprache Englisch, weiteren Sprachen: Deutsch
- Custom Post Type `rcb-cookie`
- Custom Taxonomy `rcb-cookie-group`
- Problem ist Sprachen-unabhängig, tritt sowohl in DE, als auch EN auf!
- Kein Redis oder ähnlichen Object Cache

Vorgehen:

Schritt 1: Ich habe innerhalb des Plugins zwei `rcb-cookie` Einträge erstellt, innerhalb der Custom Taxonomy `rcb-cookie-group`. Das Ganze sieht bildlich wie folgt aus:

versteckter Link

Schritt 2: Im Frontend (nicht /wp-admin!) haben wir ein Coding, mit Hilfe wir von `WP_Query` alle `rcb-cookie` Einträge holen - was auch so funktioniert. Anschließend gruppieren wir diese anhand deren Terms.

<?php
// $allPosts entspricht hier einem `WP_Post[]` Array
foreach ($allPosts as $post) {
    $terms = get_the_terms($post->ID, 'rcb-cookie-group');
    if ($groupId === 7) { // ist das die "Functional" Gruppe? Für Debug-Zwecke
        $termsWithoutWpCache = wp_get_object_terms($post->ID, 'rcb-cookie-group');

        error_log('------------');
        error_log($post->post_title);
        error_log('get_the_terms      : ' . (is_array($terms) ? json_encode(array_column($terms, 'name')) : 'false'));
        error_log('wp_get_object_terms: ' . (is_array($termsWithoutWpCache) ? json_encode(array_column($termsWithoutWpCache, 'name')) : 'false'));
    }

    // Weiteres Coding, welches aber irrelevant für diesen Bug ist
}

Schritt 3: Die Konsole erzeugt eine Ausgabe wie folgt:

------------
Anchor.fm
get_the_terms      : ["Functional","Functional"]
wp_get_object_terms: ["Functional"]
------------
SoundCloud
get_the_terms      : false
wp_get_object_terms: ["Functional"]

Was fällt hier auf:

- `get_the_terms` gibt für den ersten Eintrag zwei gleiche `WP_Term` Objekte zurück
- Beim zweiten Aufruf von `get_the_terms` wird `false` zurückgeliefert, was so nicht korrekt ist, da es definitiv einen Term dieser Taxonomie hat -> evtl. ist dies ja der zweite Match aus dem ersten Aufruf?!
- `wp_get_object_terms` funktioniert weiterhin

Schlussfolgerung: `wp_get_object_terms` verwendet im Hintergrund keinen `WP_Object_Cache`. Ich könnte mir also vorstellen, dass WPML Probleme mit `WP_Object_Cache` hat.

Es betrifft mittlerweile aber auch mehrere Benutzer und ist unabhängig von Real Cookie Banner, da ich ähnliche Probleme schon bei anderen Plugins - installiert auf Kundensystemen - feststellen konnte (maximal 1 Eintrag pro Taxonomie).

Es handelt sich hier um einen kritischen Bug, denn:

- Alle unsere Benutzer mit WordPress 6.0 + WPML können aktuell unser Produkt nicht nutzen, da eine Vielzahl an Services (bspw. Google Analytics) nicht auf deren Seite mehr eingebunden werden können, sollte es sich nicht um den 1. Eintrag innerhalb der Taxonomie `rcb-cookie-group` handeln
- `wp_get_object_terms` anstelle von `get_the_terms` verwenden ist aus meiner Sicht keine Lösung, denn dies erzeugt dutzende von SQL Queries, welche widerrum nicht gecached werden.

Mai 27, 2022 unter 1:32 pm #11326715

Marcel
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

Zeitzone: Europe/Madrid (GMT+02:00)

Hallo,

das klingt nach diesem Bug mit WP 6.0: https://wpml.org/errata/wp-6-0-issues-with-terms-assigned-to-posts/.

Funktioniert es damit?

Freundliche Grüße
Marcel

Mai 27, 2022 unter 2:58 pm #11327945

matzeeable

Hi Marcel!

Ja, das löst tatsächlich das Problem, danke!

Nun frage ich mich noch, wie ich dies unseren Kunden erkläre, da diese teils keine Dateien selbst bearbeiten können. Bietet WPML Prerelease-Downloads an? Oder gibt es bereits ein ETA, wann dieser Fix released wird? 🙂

Mai 27, 2022 unter 3:10 pm #11328137

Marcel
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

Zeitzone: Europe/Madrid (GMT+02:00)

Hallo,

sehr gut, freut mich zu hören, dass es damit funktioniert. Es gibt zwar einen Beta-Channel für Releases, welche länger geplant sind, ich vermute jedoch, dass hierzu bereits demnächst ein eigenes Update dazu erscheint, da in den letzten Stunden mehrere Meldungen dazu eingingen.

Es wird aktiv daran gearbeitet, ein Release Datum kann ich dazu jedoch leider nicht nennen.

Freundliche Grüße
Marcel

Juli 25, 2022 unter 2:06 pm #11733561

Marcel
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

Zeitzone: Europe/Madrid (GMT+02:00)

Hallo,

das Problem wurde bereits behoben: https://wpml.org/errata/wp-6-0-issues-with-terms-assigned-to-posts/.

Sollten Sie weitere Fragen dazu haben, können Sie gerne ein neues Ticket dafür anlegen.

Freundliche Grüße
Marcel

This ticket is now closed. If you're a WPML client and need related help, please open a new support ticket.