Skip Navigation

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.

This topic contains 16 Antworten, has 2 Teilnehmer.

Last updated by lorenzP Vor 2 Monate, 2 Wochen.

Assigned support staff: Andreas W..

Author Artikel
März 17, 2022 um 3:08 pm #10813675

lorenzP

Ich versuche:

URL der/meiner Website, auf der das Problem auftritt: hidden link

Erwartet hatte ich zu sehen:

Stattdessen bekam ich:

Problem:

[17-Mar-2022 11:11:50 UTC] PHP Notice: wpdb::prepare wurde fehlerhaft aufgerufen. Der Abfrage-Parameter wpdb::prepare() benötigt einen Platzhalter. Weitere Informationen: <a href="https://wordpress.org/support/article/debugging-in-wordpress/">Debugging in WordPress (engl.)</a>. (Diese Meldung wurde in Version 3.9.0 hinzugefügt.) in /home/tesibaku/www/tesibaku.myhostpoint.ch/wp-includes/functions.php on line 5768

Passiert in:

[file] => /home/xxx/wp-content/plugins/sitepress-multilingual-cms/classes/settings/ProcessNewTranslatableFields.php
[line] => 49
[function] => prepare
[class] => wpdb
[type] => ->

März 17, 2022 um 3:09 pm #10813679

lorenzP

Fehlerhafter prepare() Parameter:

SELECT DISTINCT post_id
FROM wp_postmeta
WHERE meta_key IN ('title','quotes','quotes','title','quotes','quotes','quotes','title','quotes','quotes','quotes','quotes','title','quotes','quotes','title','quotes','title','quotes','quotes','quotes','title','quotes','title','quotes','quotes','quotes','title','quotes','title','title','quotes','quotes','quotes','title','quotes','quotes') AND meta_key <> ''
LIMIT 10 OFFSET 120

März 17, 2022 um 11:13 pm #10816701

Andreas W.
Supporter

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

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

Hallo,

Ich möchte einen temporären Zugriff (wp-admin und FTP) auf die Website anfordern, um das Problem genauer zu untersuchen. Besser wäre eine Testseite, an der das Problem repliziert werden kann.

Die dafür erforderlichen Felder findst Du unterhalb des Kommentarbereichs, wenn Du dich anmelden, um die nächste Antwort zu hinterlassen. Die Informationen, die Du angibst sind privat, was bedeutet, dass nur Du und ich sie sehen und darauf zugreifen können.

Vielleicht muss ich die Website lokal replizieren. Dazu muss ich vorübergehend ein Plugin namens „All In One WP Migration“ installieren. Dadurch kann ich eine Kopie Ihrer Website und der Inhalte erstellen. Sobald das Problem behoben ist, lösche ich die lokale Site. Lass mich bitte wissen, ob dies für Dich in Ordnung ist.

WICHTIG

Lege bitte unbedingt eine Sicherungskopie der Website und der Datenbank an, bevor Du uns den Zugriff gewährst.
Wenn Du die Felder "wp-admin / FTP" nicht sehen kannst, werden Ihre Anmeldedaten für Post und Website als "PUBLIC" (Öffentlich) festgelegt. Veröffentliche die Daten NICHT, es sei denn, Du siehst die erforderlichen wp-admin / FTP-Felder.

Das private Antwortformular sieht so aus:
hidden link

Klicke beim nächsten Antworten auf "I still need asistance".

Video:
hidden link

Mit freundlichen Grüßen
Andreas

März 19, 2022 um 12:12 am #10826165

Andreas W.
Supporter

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

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

Hallo,

Eine Frage:

Wo und wann genau tritt dieser Fehler auf, bzw. wie lässt er sich replizieren?

Mit freundlichen Grüßen
Andreas

März 21, 2022 um 3:10 pm #10839019

lorenzP

Mit aktivierten WP_DEBUG erscheinen diese Fehler im Debug Log beim Zugriff auf die Webseite. Das Log File wuchs schon auf 3.5 GB an durch die vielen Einträge.

März 22, 2022 um 7:49 pm #10851241

Andreas W.
Supporter

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

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

Hallo,

Die aktuelle debug.log hat 3,34 MB und ich sehe ein Log, bei dem die WordPress REST API für WPML aufgerufen wird.

https://wpml.org/documentation/support/rest-api-dependencies/

"wpdb::prepare wurde fehlerhaft aufgerufen" ist hier kein Error, sondern ein Hinweis aus WordPress Core (Notice):

Es bezieht sich auf eine Methode, die in WordPress verwendet wird, um Daten aus einer Tabelle der Datenbank abzurufen:
https://developer.wordpress.org/reference/classes/wpdb/prepare/

Das Plugin "Disable Cart Fragments" zeigt hier eine Warnung:
PHP Warning: Private methods cannot be final as they are never overridden by other classes

Auf Basis dieser Warnung würde ich vermuten, dass diese mit "wpdb::prepare wurde fehlerhaft aufgerufen" in Verbindung steht.

Bitte teste die Site einmal ohne WPML und beobachte, ob der Fehler weiterhin im debug.log erscheint.

Zudem:
Laut log sieht es so aus, als könne WPML keine Übersetzungsauftrage für den Advanced Translation Editor synchronisieren.

Gibt es bestimmten Seiten Probleme beim Abrufen von Übersetzungseditors? Falls ja, dann gebe mir bitte ein Beispiel.

WPML ist auf dieser Website momentan nicht registriert. Bitte registriert die Site URL hier:
https://wpml.org/de/account/websites/

Klicke dann "Show key" und nutzen diesen Schlüssel, um WPML unter Plugins > Neu Installieren > Kommerziell zu registrieren.

Mehr dazu hier:
https://wpml.org/de/faq/so-installieren-sie-wpml/

Werfe bitte ebenso einen Blick auf WooCommerce > WooCommerce Multilingual > Status und behebe die Probleme mit den fehlenden Übersetzungen des "Product Permalink Base" und das Problem mit den fehlenden WooCommerce Seiten.

Sollte danach noch weitere Hilfe notwendig sein, so gib mir bitte Bescheid.

Mit freundlichen Grüßen
Andreas

März 23, 2022 um 5:45 pm #10860539

lorenzP

Wie in meiner ersten Nachricht angegeben, habe ich die Ursache im WordPress Source Code untersucht und folgendes herausgefunden:

[file] => /home/xxx/wp-content/plugins/sitepress-multilingual-cms/classes/settings/ProcessNewTranslatableFields.php
[line] => 49
[function] => prepare
[class] => wpdb
[type] => ->

D.h. der Bug ist in folgender Datei von WPML: sitepress-multilingual-cms/classes/settings/ProcessNewTranslatableFields.php auf Zeile 49.

Der fehlerhafter prepare() Parameter ist folgender (siehe ebenfalls oben):

SELECT DISTINCT post_id
FROM wp_postmeta
WHERE meta_key IN ('title','quotes','quotes','title','quotes','quotes','quotes','title','quotes','quotes','quotes','quotes','title','quotes','quotes','title','quotes','title','quotes','quotes','quotes','title','quotes','title','quotes','quotes','quotes','title','quotes','title','title','quotes','quotes','quotes','title','quotes','quotes') AND meta_key <> ''
LIMIT 10 OFFSET 120

Dieses Problem hat nichts mit anderen Plugins zu tun.

März 24, 2022 um 12:20 am #10862185

Andreas W.
Supporter

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

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

Hallo,

Vielen Dank für die detaillierte Info, allerdings wird "wpdb::prepare" von jedem Plugin aufgerufen, weshald die Website in minimalem Setup alleine mit WPML gestestet werden muss, um zu bestätigen, ob der Fehler von WPML kommt.

Ich muss mich im Grunde auf eine Event beziehen können, eine bestimmte Option, die nicht wie erwartet funktioniert und welcher den Error auslöst, und auf den ich mich dann berufen kann, um das Problem zu replizieren und weiterzuleiten.

Das Problem könnte laut deinem Debug einen Zusammenhang zwischen WPML und einem anderen Plugin, wie zum Beispiel ACF und den CPTs darstellen.

Zum Beispiel:

Ich habe unter "News" den privaten Post "WPML Test" erstellt und versucht diesen auf Englisch zu übersetzen. Die Übersetzung wird nicht ageschlossen. Der Status verändert sich nicht.

WICHTIG:
Auf der Website erscheint weiterhin:

"WPML plugin cannot connect to wpml.org"

Ich bitte nochmals darum WPML zu registrieren und daraufhin werde mich mir das Problem genauer ansehen können.

https://wpml.org/de/faq/so-installieren-sie-wpml/

Mit freundlichen Grüßen
Andreas

März 29, 2022 um 3:07 pm #10903955

lorenzP

Der Aufruf kommt vom WPML Plugin. Den Stack Trace habe ich untersucht (siehe oben). Ich kann noch weitere Details zum Aufruf loggen direkt aus dem WPML Code. Aber für die WPML Entwickler sollte die jetzige Information bereits ausreichen.

Ich sehe keine "WPML plugin cannot connect to wpml.org" Meldung auf dieser Webseite.

März 29, 2022 um 3:08 pm #10903957

lorenzP

WPML ist jetzt nochmals registriert.

März 29, 2022 um 3:18 pm #10904041

lorenzP

Der Bug ist in diesem Aufruf im WPML Code:

return $wpdb->get_col(
$wpdb->prepare(
"SELECT DISTINCT post_id
FROM {$wpdb->prefix}postmeta
WHERE meta_key IN ({$fieldsIn}) AND meta_key <> ''
LIMIT {$limit} OFFSET {$offset}"
)
);

Prepare wird immer mit nur einem Parameter aufgerufen. Dies ist kein gültiger Aufruf, es muss immer mehr als ein Parameter verwendet werden oder WordPress gibt die Warnung aus.

März 29, 2022 um 3:20 pm #10904055

lorenzP

WPML verwendet keinen % Placeholder, dies ist die genaue Ursache der Fehlermeldung:

https://developer.wordpress.org/reference/classes/wpdb/prepare/

D.h. anstatt {$limit} sollte dort %d stehen und $limit als Parameter übergeben werden.

März 29, 2022 um 9:47 pm #10906255

Andreas W.
Supporter

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

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

Hallo,

Vielen Dank für die detaillierte Info.

Das Problem wurde bereits in Verbindung mit ACF und bestimmten Custom Post types (bzw. Custom Themes) berichtet und unser Second-Tier Support untersucht dies bereits.

Ich habe dieses Ticket und deinen Lösungsansatz dem Thread hinzugefügt.

Sobald ich hierzu eine Rückmeldung habe, werde ich mich wieder melden.

Mit freundlichen Grüßen
Andreas

Juli 8, 2022 um 9:57 am #11629759

lorenzP

Gibt es ein Update zu diesem Problem? Wir sehen weiterhin massenhaft Einträge in der Log Datei. Ich hoffe, ein Bugfix wird bald verfügbar sein.

Juli 9, 2022 um 11:05 am #11635057

Andreas W.
Supporter

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

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

Hallo,

Es tut mir sehr leid Dir mitteilen zu müssen, dass das Problem noch nicht behoben werden konnte.

Es handelt sich offensichtlich um einen Bug, zu welchem wir allerdings bislang nur zwei Berichte habe.

Ich versuche dazu vom verantwortlichen Entwicklungteam nähere Informationen zu erhalten und werde mich daraufhin wieder melden.

Beachte hierzu bitte, dass die Warnungen wohl aufgetreten sind, nachdem Übersetzungseinstellungen von benutzerdefinierten Felder gendert wurden und diese Warnung sollte nicht mehr angezeigt werden sollten, sobald alle Inhalte aktualisiert wurden.

Mit freundlichen Grüßen
Andreas