Ошибка загрузки блока: Ответ не является допустимым ответом JSON

После очередного обновления WordPress команда разработчиков сделала всем очень «приятный подарок» — изменили панель настроек виджетов. Теперь же работа виджетов построена на редакторе «Гутенберг», как и в случае с редактором публикаций статей.

Лично я нахожу редактор «Гутенберг» отвратительным, не интуитивным и просто чей-то глупой шуткой. Но, каждому свое. Есть те, кому он нравится и считают его прогрессивным решением. В общем, если вы решили его использовать, но столкнулись с ошибкой «Ответ не является допустимым ответом JSON», то давайте рассмотрим вариант ее решения.

Решение

Причин может быть множество, включая полностью индивидуальными. Но есть одна определенная причина, это отключение событий REST API. Уверен, что у многих в файле functions.php что-то подобное есть, или отключение событий за счет плагинов-оптимизаторов.

Все что нужно сделать, так это удалить код, который отключает событий REST API. Выглядит он примерно так:

// Отключаем сам REST API
add_filter('rest_enabled', '__return_false');

// Отключаем фильтры REST API
remove_action( 'xmlrpc_rsd_apis',            'rest_output_rsd' );
remove_action( 'wp_head',                    'rest_output_link_wp_head', 10, 0 );
remove_action( 'template_redirect',          'rest_output_link_header', 11, 0 );
remove_action( 'auth_cookie_malformed',      'rest_cookie_collect_status' );
remove_action( 'auth_cookie_expired',        'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_username',   'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_hash',       'rest_cookie_collect_status' );
remove_action( 'auth_cookie_valid',          'rest_cookie_collect_status' );
remove_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );

// Отключаем события REST API
remove_action( 'init',          'rest_api_init' );
remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );
remove_action( 'parse_request', 'rest_api_loaded' );

// Отключаем Embeds связанные с REST API
remove_action( 'rest_api_init',          'wp_oembed_register_route'              );
remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

Обязательно!

После удаления такого кода или отключения плагина, который отключает события, нужно сделать следующее: зайти в админку во вкладку «Настройки – Постоянные ссылки» и просто нажать на кнопку «Сохранить изменения».

Классический редактор

Для всех, кто привык к старым редакторам и не хочет от них отвыкать, есть специальные плагины. Они возвращаю привычный всем вид. Просто установите и активируйте их.

Classic Editor — Классический редактор постов
Classic Widgets — Классический редактор виджетов

5 комментариев
Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *