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
- - - - - - -

Unterstützt die Zeitzone: America/Lima (GMT-05:00)

Schlagwörter: 

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

Zuletzt aktualisiert von Andreas W. Vor 5 Monaten, 1 Woche.

Assistiert von: Andreas W..

Verfasser Beiträge
Mai 31, 2024 unter 3:35 pm #15693188

wpmladmin1861

Hintergrund des Themas:
Ich versuche, bbpress mit WPML für mehrere Sprachen einzurichten, um in jeder Sprache mehrere Foren mit verschiedenen Themen zu haben. Ich verwende das Divi-Theme, jedoch scheint dies für die aktuelle Fragestellung irrelevant zu sein.

Die Symptome:
Wenn ich die WPML-Einstellungen so konfiguriere, dass Foren übersetzbar sind und Themen nicht, werden die Themen für alle Sprachen im Widget angezeigt. Wenn sowohl Foren als auch Themen übersetzbar sind, werden Themen im Widget nur für eine Sprache angezeigt und für andere Sprachen nicht.

Fragen:
Ist es möglich, eine Trennung der Themen nach Sprache im Widget 'Neues Forumsthemen' zu erreichen, sodass das Widget nur Themen der Anmeldesprache anzeigt?
Wo und wann setzt WPML einen Sprachfilter bei den Widgets ein, und gibt es einen spezifischen WordPress Hook, den ich für das Debugging oder eine PHP-Lösung verwenden könnte?

Mai 31, 2024 unter 3:37 pm #15693241

wpmladmin1861

Noch 2 ergänzende Hinweise: Eine WPML Aktualisierung war bei mir nicht möglich, das prüfe ich noch. Das Memory Limit wurde mit 128 MB von WPML geprüft, es sollte aber bei ca. 512 MB liegen. Ich arbeite in einer Plesk Umgebung mit verschiedenen Instanzen, eventuell prüft WPML den falschen Parameter (?). Auch das werde ich noch prüfen, es gibt aber sonst keine technischen Probleme.

Juni 1, 2024 unter 7:58 am #15694400

wpmladmin1861

Noch einen Hinweis: den WPML Hook habe ich mittlerweile beim Debugging gefunden.

Juni 1, 2024 unter 12:42 pm #15694626

Andreas W.
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

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

Hallo,

Könntest Du bitte die WordPress-Speichergrenze (WP Memory Limit) auf mindestens 256 MB erhöhen? Für WPML ist mindestens 128M erforderlich.
Deine aktuellen Werte sind:

PHP Memory Limit 512M (Server Limit in php.ini)
WP Memory Limit 40M (WordPress Limit in wp-config.php)

Du musst Dich dazu mit dem Server Deiner Website verbinden und die Datei wp-config.php in einem Text-Editor öffnen. Die Datei befindet sich im Stammverzeichnis von WordPress.

Füge diesen Code der Datei wp-config.php hinzu, um den Arbeitsspeicher von WordPress zu erhöhen:

define ('WP_MEMORY_LIMIT', '256M');

Fügen dies kurz vor diesem Kommentar ein:

// That's all, stop editing! Happy blogging.

Die aktuellen Werte lassen sich unter WPML > Support > WordPress einsehen.

Diese Einstellungen können direkt von Ihrem Hosting-Provider eingeschränkt werden. Daher empfehle ich, sich mit ihnen in Verbindung zu setzen und dort darum zu bitten, diese direkt zu ändern, sollten die Änderunge nicht direkt übernommen werden.

Mit freundlichen Grüßen
Andreas

Juni 1, 2024 unter 4:31 pm #15694862

wpmladmin1861

Hallo,
danke für die Antwort. Ich habe die Einstellungen angepasst. Sorry, das ist ja wirklich eine elementare Einstellung, ich habe das WordPress Limit und das PHP Limit nicht unterschieden.
Unten die neuen Supportinfos, jetzt ist es angepasst. Das Problem besteht immer noch, ich weiss zumindest teilweise woran es liegt, das schreib ich separat.

Juni 1, 2024 unter 4:48 pm #15694937

wpmladmin1861

Ich füge hier nochmal eine Detailanalyse an, ich habe glaube ich einen Teil des Problems entdeckt.

Mich würde aber zunächst mal ganz einfach interessieren, was überhaupt aus Eurer Sicht die richtige Konfiguration wäre: Foren übersetzbar/Themen übersetzbar oder nicht, und ob das Widget Teil der WPML Integration ist.

Zu den Details:
Ich habe festgestellt, dass WPML bei meinen aktuellen Einstellungen im bbp_press widget "Letzte Themen" auf italienisch nur Themen anzeigt, wenn sie keinem Forum zugeordnet sind.
Auf deutsch werden die Themen richtig angezeigt. Debugging ergibt folgendes:

Das Widget generiert auf italienisch eine WordPress Query bzw. eine SQL Query der Where Klausel mit der Bedingung
"post_parent = 0":

AND wpstg0_posts.post_parent = 0 AND wpstg0_posts.post_type = 'topic' AND ((wpstg0_posts.post_status = 'publish' OR wpstg0_posts.post_status = 'closed')) AND ( ( ...

Daher sieht man die Themen auch, wenn sie keinem Forum zugeordnet sind.

Auf Deutsch fehlt die Bedingung für den post_parent, daher sieht man alle Themen.

Einige Analyse ergab: in der Klasse class WPML_Query_Parser/File wp-content/plugins/sitepress-multilingual-cms/classes/query-filtering/class-wpml-query-parser.php gibt es eine Methode maybe_adjust_parent, die auf Deutsch gar nicht durchlaufen wird. Im Italienischen wird in dieser Methode der Query Parameter "post_parent = any " übersetzt in den post_parent = 0. Das ist eventuell ich ein Bug. Ich habe mal experimentell einen Fix eingebaut, siehe unten, und das funktioniert so auch, passt aber so sicher nicht zu Gesamtdesign.

private function maybe_adjust_parent( $q, $post_type, $current_language ) {
$post_type = ! is_scalar( $post_type ) && count( $post_type ) === 1 ? end( $post_type ) : $post_type;
if ( ! empty( $q->query_vars['post_parent'] )
&& $q->query_vars['post_type'] !== 'attachment'
&& $post_type
&& is_scalar( $post_type )
&& $this->sitepress->is_translated_post_type( $post_type )
) {
/** Bugfix/Hack für Mehrsprachigkeit */
if ( $q->query_vars['post_parent'] == 'any' ) {
return $q;
}

$q->query_vars['post_parent'] = $this->post_translations->element_id_in(
$q->query_vars['post_parent'],
$current_language,
true
);
}

Juni 2, 2024 unter 2:55 am #15695103

Andreas W.
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

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

Vielen Dank für die Details!

Achte bitte auch darauf, dass auf Deiner Website unsere Plugins anscheinend nicht aktualisiert sind. Gehe bitte auf Plugins > Neues Plugin hinzufügen > Kommerziell (Tab) und klicke auf "Nach WPML Updates suchen". Installiere dann die aktuellsten Versionen unserer Plugins und teste erneut.

Sollte das Problem bestehen bleiben, versuche es bitte auf meiner Test Site nachzustellen, damit wir weitere interne Schritte vornehmen können.

Unter folgendem Link findest Du eine WPML Test Site mit BBPress.

Ein-Klick-Anmeldung:
versteckter Link

Kannst Du bitte einmal versuchen, ob sich das Problem hier replizieren lässt und mir danach Bescheid geben?

Beachte bitte, dass ich Sonntags und Montags nicht arbeite, aber ich werde mir das am Dienstag direkt anschauen.

Juni 4, 2024 unter 10:08 am #15701005

wpmladmin1861

Danke für das schnelle Feedback. Der Support ist hier ja so professionell, dass man sich fast auf den nächsten Bug freuen kann 🙂 Ich versuche das Problem in dieser oder der nächsten Woche nachzustellen, die Zeit habe ich im Moment nicht. Können wir das Ticket erstma offenlassen, oder macht das Probleme?

Juni 4, 2024 unter 11:03 am #15701632

Andreas W.
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

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

Es freut mich zu hören, dass Du mit unseren Support sehr zufrieden ist.

Das Ticket wird für maximal zwei Wochen offen bleiben, sollte wir bis dahin keine Antwort erhalten habe.

Bei einem kurzen Test auf meiner Test Site kann ich aktuell noch ein Problem bestätigen.

1) Ich habe hier das Forum und das Thema übersetzt und ein paar Widgets im Footer hinterlegt.

2) Damit dies reibungslos funktioniert, empfehle ich allerdings unter WPML > Settings > Cusotm Fields Translation auf "Show system fields klicken und einige Felder aus bbPress auf "Kopieren" stellen.

3) Die String von bbPress muss man in dem Fall dann noch unter Dashboard > Updates > Translation herunterladen und kann diese per WPML > String-Übersetzung anpassen.

4) Die Titel der Widgets werde ebenfalls über WPML > String-Übersetzung erstellt.

Problem:
Bei dem Widget "Recent Topics" scheint die Übersetzung hier allerdings weder per String Translation, oder durch das Erstellen von einem Widget pro Sprache zu lösen.

Ich werde weiterhin testen und dieses Problem intern eskalieren, sollte es sich nicht auf andere Art und Weise lösen lassen.

Juni 4, 2024 unter 10:59 pm #15704535

Andreas W.
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

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

Bislang konnte ich die Ursache leider noch nicht herausfinden.

Sollte ich keine baldige Lösung anbieten können, werde ich das Problem morgen intern eskalieren.

Juni 5, 2024 unter 7:24 pm #15708613

Andreas W.
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

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

Bislang kann ich folgenden Workaround für das Problem anbieten:

In der Datei:
wp-content\plugins\bbpress\includes\common\widgets.php

Auf den Zeilen 696, 722 und 749:

Ändere:

'post_parent'    => $settings['parent_forum'],

Zu:

//'post_parent'    => $settings['parent_forum'],

Dies wird allerdings dazu führen, dass das Optionsfeld "Parent Forum ID:" bei dem Widget keinen Effekt hat.

Das Problem wurde nun intern an das Compatibility Team weitergeleitet und ich werde mich wieder melden, sobald ich von dort eine Rückmeldung habe.

Juni 7, 2024 unter 12:26 pm #15716476

wpmladmin1861

Vielen Dank für die Antwort. Ich bin gespannt auf die Antwort des Compatibility Teams. Ich hatte noch keine Zeit, das Problem noch einmal selbst nachzustellen. Aber aus dem Lösungsvorschlag schliesse ich, dass das Problem tatsächlich im Bereich des post_parent bzw. der Transformation des post_parent Parameters in die SQL Query liegt. Wie gesagt war ja auch eine Lösung in meinem Setup, ein Theme einfach KEINEM Forum zuzuordnen. Der post_parent ist dann = 0 und wird über die SQL Query gefunden.

Juni 8, 2024 unter 2:13 pm #15718338

Andreas W.
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

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

Hier weiteres Feedback zum Thema:

Workaround 1 (Empfohlen).
Editiere das Widget.
Lasse das "Parent Forum ID" Feld leer, anstatt die Angabe 'any' zu verwenden.

Workaround 2
Öffne die Datei .../wp-content/plugins/bbpress/includes/common/widgets.php fie.

Unter Zeile 678:

		$settings = $this->parse_settings( $instance );

Füge folgendes hinzu:

		//workaround compsupp-7407
		if ( class_exists('Sitepress')  && $settings['parent_forum'] ===  'any' )  {
			$settings['parent_forum'] = '';
		}

Debug
Zum Erstellen der Widgets verwendet BBPress in seiner WP_Query-Abfrage „post_parent“ => $settings[„parent_forum“]. Als Werte erhält es „any“ oder ein Array numerischer IDs (Post-IDs).

Lesen Sie jedoch das WP_Query-Handbuch: post_parent (int) – verwenden Sie die Seiten-ID, um nur untergeordnete Seiten zurückzugeben. Man kann der Wert auch auf 0 setzen, um nur Einträge der obersten Ebene zurückzugeben.

Ich sehe keine Möglichkeit, eine Zeichenfolge oder „any“ zu verwenden, und WPML kann dies nicht erkennen. Es scheint so, als wäre dies vom Autor beabsichtigt. Sie können beispielsweise sehen, dass dieser Wert in anderen Fällen erzwungen wird:

		// Force to any
		if ( ! empty( $instance['parent_forum'] ) && ! is_numeric( $instance['parent_forum'] ) ) {
			$instance['parent_forum'] = 'any';
		}

Wir werden versuchen das BBPress Team dazu zu kontaktieren und uns dann wieder melden.

Juni 15, 2024 unter 2:38 pm #15741800

wpmladmin1861

Hallo,
die Erklärung vom WordPress API leuchtet mir ein. Ich habe noch einen Screenshot vom Widget angefügt. Hier ist kommt der String "any" als Default, das hatte ich vorher noch gar nicht gesehen. Und der string aus dem UI wird dann bis in der Datenbank weitergegeben? Puh...Sieht aus wie eine bbpress Baustelle.

widget_any.PNG
Juni 15, 2024 unter 5:50 pm #15741971

Andreas W.
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

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

Richtig, wir haben das Problem bereits an BuddyPress weitergeleitet und warten auf deren Antwort.

Sobald ich Neuigkeiten habe, werde ich mich wieder melden.