Критическая ошибка при публикации поста в Discourse

При использовании последнего плагина Discourse и плагина для WordPress WP Discourse при попытке опубликовать запись в Discourse возникает следующая ошибка:

Произошла ошибка типа E_ERROR в строке 207 файла /www/sociocracyforall_679/public/wp-content/themes/Divi/includes/builder/feature/gutenberg/blocks/Layout.php. Сообщение об ошибке: Uncaught ArgumentCountError: Слишком мало аргументов для функции ET_GB_Block_Layout::get_the_excerpt(), передан 1 аргумент в /www/sociocracyforall_679/public/wp-includes/class-wp-hook.php в строке 303, а ожидается ровно 2 в файле /www/sociocracyforall_679/public/wp-content/themes/Divi/includes/builder/feature/gutenberg/blocks/Layout.php:207
Стек вызовов:
#0 /www/sociocracyforall_679/public/wp-includes/class-wp-hook.php(303): ET_GB_Block_Layout->get_the_excerpt(‘It was yet anot…’)
#1 /www/sociocracyforall_679/public/wp-includes/plugin.php(189): WP_Hook->apply_filters(‘It was yet anot…’, Array)
#2 /www/sociocracyforall_679/public/wp-content/plugins/wp-discourse/lib/discourse-publish.php(271): apply_filters(‘get_the_excerpt’, ‘It was yet anot…’)
#3 /www/sociocracyforall_679/public/wp-content/plugins/wp-discourse/lib/discourse-publish.php(209): WPDiscourse\DiscoursePublish\DiscoursePublish->sync_to_discourse_work(32452, ‘The day I conse…’, ’

Похоже на баг, вызванный изменением количества аргументов между версиями, да?

Привет, CJ! Похоже, ошибка исходит от плагина Divi или одного из его расширений.

Действительно, если вы поищите в Google ET_GB_Block_Layout, то увидите, что у ряда других сайтов возникла та же проблема (во многих случаях она присутствует в HTML-коде, который сканирует Google). Проверьте, установлена ли у вас последняя версия их плагина, и, возможно, стоит сообщить об этом разработчикам Elegant Themes.

Причина, по которой код WP Discourse появляется в стеке вызовов (ниже, что обычно означает, что он не является источником проблемы), заключается в том, что при нажатии кнопки «Опубликовать» выполняется любой код, связанный с действиями после публикации, в тесной взаимосвязи.

Если после публикации возникает какое-либо исключение, независимо от его источника, код плагина WP Discourse, скорее всего, будет фигурировать в стеке вызовов на каком-то этапе. Однако это не означает, что именно он является источником проблемы.

И действительно, это происходит только при включенном Divi.

Надеюсь, они исправят это :slight_smile:

Полный стек вызовов для справки:

ArgumentCountError: Uncaught exception 'ArgumentCountError' with message 'Too few arguments to function ET_GB_Block_Layout::get_the_excerpt(), 1 passed in /www/sociocracyforall_679/public/wp-includes/class-wp-hook.php on line 303 and exactly 2 expected' in /www/sociocracyforall_679/public/wp-content/themes/Divi/includes/builder/feature/gutenberg/blocks/Layout.php:207
in ET_GB_Block_Layout::get_the_excerpt called at /www/sociocracyforall_679/public/wp-includes/class-wp-hook.php (303)
in WP_Hook::apply_filters called at /www/sociocracyforall_679/public/wp-includes/plugin.php (189)
in apply_filters called at /www/sociocracyforall_679/public/wp-content/plugins/wp-discourse/lib/discourse-publish.php (271)
in WPDiscourse\DiscoursePublish\DiscoursePublish::sync_to_discourse_work called at /www/sociocracyforall_679/public/wp-content/plugins/wp-discourse/lib/discourse-publish.php (209)
in WPDiscourse\DiscoursePublish\DiscoursePublish::sync_to_discourse called at /www/sociocracyforall_679/public/wp-content/plugins/wp-discourse/lib/discourse-publish.php (158)
in WPDiscourse\DiscoursePublish\DiscoursePublish::publish_post_after_save called at /www/sociocracyforall_679/public/wp-includes/class-wp-hook.php (305)
in WP_Hook::apply_filters called at /www/sociocracyforall_679/public/wp-includes/class-wp-hook.php (327)
in WP_Hook::do_action called at /www/sociocracyforall_679/public/wp-includes/plugin.php (470)
in do_action called at /www/sociocracyforall_679/public/wp-includes/post.php (5180)
in wp_after_insert_post called at /www/sociocracyforall_679/public/wp-includes/post.php (4482)
in wp_insert_post called at /www/sociocracyforall_679/public/wp-includes/post.php (4570)
in wp_update_post called at /www/sociocracyforall_679/public/wp-admin/includes/post.php (423)
in edit_post called at /www/sociocracyforall_679/public/wp-admin/post.php (227)