Navigation überspringen

Dieses Thema ist gelöst. Hier finden Sie eine Beschreibung des Problems und der Lösung.

Problem:
Wenn Sie feststellen, dass der Datenimport auf Ihrer Website fehlschlägt, sobald WPML aktiviert ist, und im Error Log ein PHP Fatal Error erscheint, der auf ein Problem mit

array_filter()

in der Datei

class-wpml-element-translation-package.php

hinweist, könnte dies an fehlenden oder inkonsistenten Daten in der Datenbank liegen.

Solution:
Wir empfehlen Ihnen, die "Ghost entries cleanup"-Option in unseren Troubleshooting-Optionen zu verwenden, um das Problem zu beheben. Diese Funktion finden Sie unter: WPML Troubleshooting-Optionen.
Wenn Sie die Funktion "Ghost entries cleanup" verwenden, werden fehlende Einträge in der Datenbank bereinigt, die zu dem Fehler führen könnten. Sollte das Problem weiterhin bestehen, zögern Sie bitte nicht, ein neues Support-Ticket zu eröffnen: WPML Support-Forum.

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.

Schlagwörter: 

Dieses Thema enthält 20 Antworten, hat 3 Stimmen.

Zuletzt aktualisiert von Marcel Vor 1 Jahr, 4 Monaten.

Assistiert von: Marcel.

Verfasser Beiträge
Januar 11, 2024 unter 3:49 pm #15175727

nadial-2

Seit einigen Jahren nutzen wir eine selber entwickelte Daten-Importfunktion und WPML auf lacetra.ch
Seit kurzem macht der Import Fehler.
Wenn wir alle WPML Plugins deaktivieren geht der Import, wenn WPML aktiviert ist nicht.

Mein Entwickler ist grad etwas Ratlos, hat mich gebeten euch zu Fragen, ob ihr eine Idee habt, wo der Fehler liegen könnte.

Ich habe einen Staging Website aufgebaut, ich kann gerne Zugriff geben, wenn das helfen würde.

Hier der Error Log

[11-Jan-2024 12:00:52 UTC] PHP Fatal error: Uncaught TypeError: array_filter(): Argument #1 ($array) must be of type array, bool given in /home/httpd/vhosts/lacetra.ch/httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/translation-jobs/class-wpml-element-translation-package.php:319
Stack trace:
#0 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/translation-jobs/class-wpml-element-translation-package.php(319): array_filter(false)
#1 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/translation-jobs/class-wpml-element-translation-package.php(92): WPML_Element_Translation_Package->add_custom_field_contents(Array, NULL, Array, NULL)
#2 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-content/plugins/sitepress-multilingual-cms/inc/actions/wpml-tm-action-helper.class.php(13): WPML_Element_Translation_Package->create_translation_package(NULL)
#3 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-content/plugins/sitepress-multilingual-cms/inc/actions/wpml-tm-post-actions.class.php(72): WPML_TM_Action_Helper->create_translation_package('10294')
#4 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-content/plugins/sitepress-multilingual-cms/inc/functions-load-tm.php(943): WPML_TM_Post_Actions->save_post_actions(10313, Object(WP_Post), false)
#5 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-includes/class-wp-hook.php(324): wpml_tm_save_post(10313, Object(WP_Post), false)
#6 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters('', Array)
#7 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#8 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-content/plugins/sitepress-multilingual-cms/inc/post-translation/wpml-post-translation.class.php(213): do_action('wpml_tm_save_po...', 10313, Object(WP_Post), false)
#9 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-content/plugins/sitepress-multilingual-cms/inc/post-translation/wpml-admin-post-actions.class.php(123): WPML_Post_Translation->after_save_post('63713', Array, 'de', 'en')
#10 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-includes/class-wp-hook.php(326): WPML_Admin_Post_Actions->save_post_actions(10313, Object(WP_Post))
#11 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array)
#12 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#13 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-includes/post.php(4760): do_action('save_post', 10313, Object(WP_Post), true)
#14 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-content/plugins/lacetra-442hz-updater/lacetra-442hz-updater.php(229): wp_insert_post(Array)
#15 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-content/plugins/lacetra-442hz-updater/lacetra-442hz-updater.php(89): LaCetra_442hz_Importer->insert_event(Object(stdClass))
#16 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-includes/class-wp-hook.php(324): LaCetra_442hz_Importer->ajax_process_import('')
#17 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters('', Array)
#18 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#19 /home/httpd/vhosts/lacetra.ch/httpdocs/wp-admin/admin-ajax.php(188): do_action('wp_ajax_lacetra...')
#20 {main}
thrown in /home/httpd/vhosts/lacetra.ch/httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/translation-jobs/class-wpml-element-translation-package.php on line 319

Mit Grüssen. Nadia

Januar 11, 2024 unter 6:46 pm #15176379

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

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

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

Hallo,

Kann es sein, dass bei den Import-Daten eine ungültige Post ID angewendet wird, also eine Post ID die keine Zahl, die Ziffer "0" oder eine negative Zahl ist?

Mit freundlichen Grüßen
Andreas

Januar 11, 2024 unter 6:47 pm #15176380

Marcel
Unterstützer

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

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

Hallo Nadia,

bitte beachten Sie, dass unser Support leider keine Hilfe zu Custom Coding abdeckt. Wir können jedoch gerne einen Blick auf Ihren bestehenden Code werfen, um zu sehen, wo hier ein Konflikt ausgelöst wird.

1) Was genau importiert Ihre Importfunktion (Posts eines CPTs?). Ist dies der Code des Plugins "lacetra-442hz-updater", wo das Stack Trace hier einen Fehler meldet?

2) Wenn ja, was machten die betroffenen Zeilen 89 & 229 der Datei lacetra-442hz-updater.php?

Wir haben einen bekannten Fehler mit der identischen Codezeile, mit Bezug zu einem 3rd Party Plugin, welches auf Ihrer Installation jedoch nicht aktiv ist (GiveWP). Hier wurde ein Fehler ausgelöst, welcher die Metatabellen außer Kraft gesetzt hat, um deren eigene zu verwenden.
Außerdem wurde die Standardrückgabe überschrieben, wenn eine Meta-Tabelle nicht gefunden wird - von Array auf die leere Zeichenfolge. Dies könnte ggf. bei Ihrem Importcode ebenso der Fall sein. Anbei der betroffene Code, wie es in diesem Plugin falsch war: https://wpml.org/errata/give-donation-fatal-error-when-trying-to-update-or-translate-a-form/.

Edit: Bei Ihrem Plugin ist es "bool", bei diesem genannten Fehler "string". False wird jedoch nur zurückgegeben, wenn invalid $post_id der Fall ist.

Freundliche Grüße
Marcel

Januar 11, 2024 unter 9:02 pm #15176593

nadial-2

Danke für eure Inputs! Ich hab die mal an meinen Entwickler weitergeleitet.

Januar 12, 2024 unter 3:04 pm #15179736

Marcel
Unterstützer

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

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

Sehr gerne!

Januar 15, 2024 unter 9:30 am #15183811

nadial-2

Anscheinend klemmts, mein Entwickler Patryk meint es sei ein Bug von seiten WPMwird sich in den Chat einklinken, ich kopier hier mal seine letzte Nachricht rein.

I spent a while debugging the issue and it looks like without them fixing the issue on their side we aren't able to make it work.
If you want you may add me to the ticke you have opened with them (wpml). I think we may give them access to stgaing.

Anyway it looks like their code do some weird things.
I will paste the log from staging:

[15-Jan-2024 08:17:50 UTC] PHP Fatal error: Uncaught TypeError: array_filter(): Argument #1 ($array) must be of type array, bool given in /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-content/plugins/sitepress-multilingual-cms/classes/translation-jobs/class-wpml-element-translation-package.php:319
Stack trace:
#0 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-content/plugins/sitepress-multilingual-cms/classes/translation-jobs/class-wpml-element-translation-package.php(319): array_filter(false)
#1 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-content/plugins/sitepress-multilingual-cms/classes/translation-jobs/class-wpml-element-translation-package.php(92): WPML_Element_Translation_Package->add_custom_field_contents(Array, NULL, Array, NULL)
#2 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-content/plugins/sitepress-multilingual-cms/inc/actions/wpml-tm-action-helper.class.php(13): WPML_Element_Translation_Package->create_translation_package(NULL)
#3 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-content/plugins/sitepress-multilingual-cms/inc/actions/wpml-tm-post-actions.class.php(72): WPML_TM_Action_Helper->create_translation_package('10294')
#4 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-content/plugins/sitepress-multilingual-cms/inc/functions-load-tm.php(943): WPML_TM_Post_Actions->save_post_actions(10313, Object(WP_Post), false)
#5 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-includes/class-wp-hook.php(324): wpml_tm_save_post(10313, Object(WP_Post), false)
#6 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters('', Array)
#7 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#8 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-content/plugins/sitepress-multilingual-cms/inc/post-translation/wpml-post-translation.class.php(213): do_action('wpml_tm_save_po...', 10313, Object(WP_Post), false)
#9 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-content/plugins/sitepress-multilingual-cms/inc/post-translation/wpml-admin-post-actions.class.php(123): WPML_Post_Translation->after_save_post('63713', Array, 'de', 'en')
#10 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-includes/class-wp-hook.php(326): WPML_Admin_Post_Actions->save_post_actions(10313, Object(WP_Post))
#11 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array)
#12 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#13 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-includes/post.php(4760): do_action('save_post', 10313, Object(WP_Post), true)
#14 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-content/plugins/lacetra-442hz-updater/lacetra-442hz-updater.php(229): wp_insert_post(Array)
#15 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-content/plugins/lacetra-442hz-updater/lacetra-442hz-updater.php(89): LaCetra_442hz_Importer->insert_event(Object(stdClass))
#16 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-includes/class-wp-hook.php(324): LaCetra_442hz_Importer->ajax_process_import('')
#17 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters('', Array)
#18 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#19 /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-admin/admin-ajax.php(188): do_action('wp_ajax_lacetra...')
#20 {main}
thrown in /home/httpd/vhosts/lacetra.ch/staging.lacetra.ch/wp-content/plugins/sitepress-multilingual-cms/classes/translation-jobs/class-wpml-element-translation-package.php on line 319

What is happening here?
When we try to update post with ID 10313 -> versteckter Link - WPML tries to do something with the post with ID 10294 which doesn't exist -> versteckter Link - no idea what their code is trying to do... And because that post doesn't exist their plugin throws Fatal Error...
Is that non-exsting post supposed to be translation? Hard to say... IMO it shouldn't work like that. And I would call that simply a bug.

Januar 15, 2024 unter 10:00 am #15184022

Marcel
Unterstützer

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

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

Hallo,

ich möchte erwähnen, dass Ihr Fehler nur in Kombination mit Ihrem Custom Code ausgelöst wird. - array_filter(false) ist nur dann der Fall, wenn eine ungültige Post ID in get_post_meta aufgerufen wird, siehe https://developer.wordpress.org/reference/functions/get_post_meta/.

Sofern die ID 10313 die Default-Sprache ist, sollten Sie in der DB folgende Einträge dazu für die Übersetzung vorfinden: https://wpml.org/documentation/support/wpml-tables/#language-information-and-translations. Ist dies der Fall?

Freundliche Grüße
Marcel

Januar 15, 2024 unter 10:30 am #15184216

nadial-2

Hello 🙂
Patryk here,
I understand the issue, but I'm curious why you can't check first if post exists instead of assuming that it exists.
No idea why there is in your tables refered non existing post...
What we may do about it?

Thanks for any help!

Best,
Patryk

Screenshot 2024-01-15 at 11.21.52.png
Januar 15, 2024 unter 11:43 am #15184711

nadial-2

Nadia here:
The faulty entry ID 6130 is an image, it is embedded on this page
versteckter Link

It shows up on german an english page, just in case that is relevant...

UPDATE: sorry, mixup, it confused translation id with post id....
ignore what i wrote above

Januar 15, 2024 unter 12:02 pm #15184868

Marcel
Unterstützer

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

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

Hallo,

The faulty entry ID 6130 is an image, it is embedded on this page
versteckter Link

Der CPT "Konzerte" verwendet ein Fallback zur Default-Sprache. Es wird somit der DE Content mit einem EN Permalink ausgegeben. Tritt dies ebenso auf, wenn Sie vor den Import die Einstellungen für den CPT auf "Only show translated items" umstellen? Siehe https://wpml.org/documentation/getting-started-guide/translating-custom-posts/.

Freundliche Grüße
Marcel

Januar 15, 2024 unter 1:42 pm #15185556

nadial-2

Hi again,
Patryk here 🙂

Marcel, I'm not sure if my post (in English, as I don't speak German) was missed.
In DB we have posts 10313 and 10294 in the same group, however post 10294 doesn't exist... What we may do about that?
I thought that in your plugin you could check if post exists before attempting to process it. I can't see any other way to fix that for good.
Another way would be to remove rows from DB manually, but it looks like a dirty solution without guarantee that the issue won't happen again in the future...

Thanks in advance for any help!

Best,
Patryk

Januar 15, 2024 unter 4:43 pm #15186260

Marcel
Unterstützer

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

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

Hi Patryk,

I'm checking this with our devs, but integrating checks where only one client benefits will likely not make it into our backlog. I can't see any other clients requesting that change. As it occurs only with custom code, there might not be more people benefiting from that change. That doesn't mean our devs will not check it, but if yes, it might be handled with very low priority. I will let you know once I receive feedback.

For now, I recommend you to remove the affected IDs manually. As you use the fallback option, you will not need a translation of that affected image ID.

Best Regards
Marcel

Januar 16, 2024 unter 9:02 am #15188494

nadial-2

Thank you Marcel!

Patryk here again 🙂

> For now, I recommend you to remove the affected IDs manually. As you use the fallback option, you will not need a translation of that affected image ID.

I'm pretty sure there were some misunderstanding here about the image ID 6130 🙂 Nadia mentioned that, but it's not necessarily true...
Anyway, I understand that in icl_translations table I should remove entries related to affected posts, right?

Best,
Patryk

Januar 16, 2024 unter 9:12 am #15188507

Marcel
Unterstützer

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

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

Hi Patryk,

she said the image is used on versteckter Link, which is using a fallback for the CPT "konzerte". The translated version is a configured fallback, not a real translation (original content displayed using a translated permalink).

Before you delete it, please provide us a duplicator copy for a check. The error message might indicate a corruption in the database. It should not behave like that in all cases; we can only tell more after further debugging.

Best Regards
Marcel

Januar 16, 2024 unter 9:38 am #15188606

nadial-2

Hi Marcel, Nadia here

It seems i made a bit of a confusion with the image... and i thought i wrote that yesterday in wpml chat, but it seems i didnt.
My head is very much in an other project, huge presentation on thursday.

The image is not causing the issue, i confused translation-ID with post-ID...