Меню

Wp ошибка обновления ответ не является допустимым ответом json шорткод

  • Добрый день.
    Столкнулась с той же проблемой, что и некоторое кол-во пользователей пару месяцев назад, однако среди имеющихся в поиске постов ответа не нашла.

    Проблема:
    Open Server 5.2.2; WordPress 5.3.2.
    Чистая установка в новую папку + новая бд.
    Голый WordPress, тема стандартная TwentyTwenty.
    Предустановленные плагины не активировались и сразу удалены.
    Лишние темы удалены.
    Ничего в системе не менялось и не настраивалось, кроме одного: «Настройки -> Постоянные ссылки» переключены со стандартных на «Название записи».
    При попытке изменить или добавить пост или страницу появляется сообщение об ошибке:
    «Ошибка обновления. Сообщение об ошибке: Ответ не является допустимым ответом JSON.»

    «Здоровье сайта» пишет 2 проблемы — отсутствие https и «REST API выдал неожиданный результат».
    Rest APi не подключала и не отключала, напомню: сайт голый. Создан полчаса назад.

    В чем может быть проблема?

    UPD: переключение «Постоянных ссылок» обратно к стандартному варианту чинит проблему.
    Но такое решение, к сожалению, совсем не вариант.
    Т.е. проблему нужно искать в файлах самого WordPress’a… Но где?
    И почему она вообще возникает, ведь вид ссылок — это стандартная системная функция..?

    • Тема изменена 2 года, 11 месяцев назад пользователем Avriel.
  • Грёбаная ошибка, которая отняла весь вечер. Уточню, ошибка выскакивала когда я пытался включить/разрешить комментарии к странице. При простом обновлении WordPress, данная ошибка не выскакивала.

    Скрин чужой, с Хабра, свой скрин не делал.

    Гугл  и Яндекс молчит по этому поводу, нигде никакой информации по «Ошибка обновления ответ не является допустимым ответом json».

    Обновление страницы начало работать, только после того как я выполнил несколько действий, которые напишу ниже. Причину исправления я таки не понял. Так как мне  было надо вывести собаку на улицу.

    Гуляли около часа. Вернулся,  решил повторить процесс, поставил галочку на «разрешить комментарии», и о чудо, страница обновилась без ошибок. Такой же процесс повторил ещё на пяти страницах, всё работает без сбоев.

    Перед этим, делал несколько манипуляций, какая из них помогла, могу только догадываться. Уточню мои некоторые параметры моего хостинга и сайта: WordPress 5.4.2–ru_RU, CPanel, PHP 7.2,  бесплатный сертификат Let’s Encrypt SSL.

    • Искал ответ в поисковых системах, нашел ряд рекомендаций.
    • Переобновил версию WP
    • Включал выключал настройки постоянных ссылок в админке, с  ?p=123 на читабельные ЧПУ
    • Поставил плагин Really Simple SSL
    • Менял версии PHP на 7.3, 7.0. Вернулся PHP к 7.2
    • Деактивировал плагин для ЧПУ Webcraftic Cyrlitera. И  активировал снова.
    • Переустановил сертификат Let’s Encrypt SSL в Cpanel. Сработало на один раз, страница корректно обновилась, но на других страницах снова ошибка.
    • Погулял с собакой, около часа, пришёл, и всё заработало.

    Скорее всего, проблема была в сертификате Let’s Encrypt SSL, только надо было дать  некоторое время.  Посмотрим что будет дальше.

    Мой Макс))

    Забыл. Ставил и удалял код в файле functions.php, который рекомендовали в сети.

    // ОТКЛЮЧАЕМ САМ 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’ );

    Приветствую вас на сайте Impuls-web!

    Если ваш сайт работает на WordPress, то данная статья будет для вас очень полезна, так как в последних версиях данной CMS есть один небольшой недостаток, и если оставить его без внимания, то в дальнейшем это может привести к тому, что ваш сайт будет постепенно терять позиции в поисковой выдаче.

    Данный недостаток связан с новым интерфейсом REST API, и заключается он в том, что на вашем сайте создается новая папка WP-JSON, в которой размещаются страницы с кодом.

    На первый взгляд ничего страшного. Однако все эти страницы попадают в поисковую выдачу, и представляют собой вспомогательный код, не содержащий какого-то уникального контента. Как известно, поисковые системы как Яндекс, так и Google очень негативно относятся к подобным мусорным страницам. Причем, со временем этих страниц становится все больше и в конечном итоге, это может привести к тому, что поисковые системы начнут понижать ваш сайт в поисковой выдаче.

    К счастью данная проблема решается довольно просто. Однако перед тем как перейти к ее решению, давайте сначала проверим, есть ли она на вашем сайте.

    Для того, что бы понять, есть ли данная папка с ненужными страницами на вашем сайте или нет, достаточно к адресу вашего сайт через слэш приписать wp-json.

    Например, так:

    impuls-web.ru/wp-json

    Если вы попадаете на страницу с непонятным кодом – это говорить о том, что на вашем сайте данная проблема есть. Именно вот такие вот страницы засоряют вашу поисковую выдачу.

    страница wp-json

    Помимо этого данный компонент так же может создавать дубли страниц на вашем сайте, которые тоже очень негативно воспринимаются поисковыми системами.

    Актуальное решение

    1. 1. Открываем файл Robots.txt, который должен находится в папке с файлами вашего сайта на хостинге. Найти и открыть его можно при помощи FTP клиента или програмы Notepad++ или аналогов, а так же через файловый менеджер на Вашем хостинге.
    2. 2. Убедитесь в том, что у вас в этом файле есть такая строка

      Выглядеть это должно так:

      Закрываем wp-json в robots.txt

    3. 3. Если такой строки нет, ножно её добавитьт. С её помощью мы задаем поисковым системам запрет на индексировнаия всех файлов, расположенных по пути: домен сайта/wp-…
      Сюда будут входить файлы /wp-json/, /wp-includes, /wp-content/plugins
    4. 4. Если вы редактировали файл прямо на хостинге, то нужно его просто сохранить. Если вы загружали этот файл с хостинга, то нужно его сохранить, а потом выгрузить обратно на хостинг с заменой существующего файла.

    Устаревшее решение

    Обращаю ваше внимание на то, что данная статья и видео записывались почти 5 лет назад! За это время многое обновилось и изменилось. На сегодняшний день я не рекомендую вам использовать устаревшее решение, так как оно может привести к проблемам в работе некоторых плагинов! Используйте первый вариант решения через файл Robots.txt.

    Тем не менее, я все же оставлю описание устаревшего метода, так как вы можете найти его на других сайтах и должны знать что это решение в современных реалиях не подходит!
    Итак, для решения данной проблемы можно воспользоваться таким алгоритмом:

    1. 1.Вставить небольшой фрагмент кода в файл функций вашей темы functions.php. Открыть данный файл вы можете при помощи стандартного редактора WordPress, который находится в разделе «Внешний вид» => «Редактор».
    2. 2.Находим здесь файл functions.php он же «Функции темы».
    3. 3.Далее, мы переходим в самый конец данного файла. А дальше внимание, в идеале файл functions.php должен заканчиваться вот такими символами: ? >

      Если в вашем файле такие символы есть, то предложенный фрагмент кода вы будете вставлять перед этим вот символом:

      редактор кода WordPress

      Если же в вашем файле функций этих символов нет, то вы просто вставляете в самом конце файла functions.php. Специально дописывать эти символы здесь не нужно!

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

    4. 4.Так же можно подключиться к сайту при помощи FTP-клиента, далее зайти в папку с доменом. Далее перейти в папку wp-content/themes/папка_с _названием_вашей_темы/ и здесь найти файл functions.php, а затем, точно так же спуститься в самый конец файла, и либо в самом конце, либо же перед символами ? > вставить данный фрагмент кода.

      Код будет выглядеть следующим образом:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      // Отключаем сам 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’ );

      В данном фрагменте кола мы отключаем компоненты REST API, которые приводят к данной прблеме.

      Вставляя код так же, обращайте внимание на то, что бы в конце данного файла у вас не стояли лишние пробелы и Enter-ы.

    5. 5.После вставки кода нажимаем на кнопку «Обновить файл».
    6. 6.Переходим на страницу сайта, обновляем ее, и теперь пробуем осуществить туже проверку, которую мы делали в самом начале. Ставим в адресной строке, после адреса сайта /wp-json.

    Если вы всё сделали правильно, то вас должно перенаправить на страницу с ошибкой 404 «страница не найдена» или на главную страницу сайта. Здесь всё зависит от темы оформления.

    Видеоинструкция

    Как видите, это решение очень простое, но на самом деле, оно позволит уберечь ваш сайт от очень серьезных проблем в будущем. Потому, как уже есть много примеров, и среди моих знакомых в том числе, у которых сайты начали терять свои позиции именно из-за того, что у них в выдаче появлялось очень много мусорных страниц и дублей, связанных с элементом WP-JSON.

    Если данная статья была для вас полезна – не забудьте написать комментарий и поделиться статьей в социальных сетях. А на этом у меня все, подписывайтесь на мою рассылку и мой канал на YouTube. До встречи в следующих статьях и видео!

    С уважением Юлия Гусарь

  • Hello guys, I have a shortcode create from my custom plugin.
    This is how I create that shortcode from plugin:

    class test_plugin{
    	function __construct()
            {
                register_activation_hook(__FILE__, array($this, 'plugin_activation'));
                register_deactivation_hook(__FILE__, array($this, 'plugin_deactivation'));
                register_uninstall_hook( __FILE__, 'plugin_uninstallation' );
            
           add_shortcode('my_custom_view_shortcode',array($this,'my_custom_view_handler'));
    
            }
            public static function my_custom_view_handler(){
                echo '<div>My view</div>';
            }
    }
    $test_plugin = new test_plugin();

    After activating plugin, I created new page and added shortcode to shortcode block like this [‘my_custom_view_shortcode’].
    And now, whenever I press publish or update button in any page/post which contains my custom shortcode [‘my_custom_view_shortcode’] will give me the error ‘Publishing/Updating failed. The response is not a valid JSON response.’
    I reloaded my page, all information was still saved in database and showed expected result ‘<div>My view</div>’.
    Can you help me how to fix that error? Thank you

  • Hello guys, I have a shortcode create from my custom plugin.
    This is how I create that shortcode from plugin:

    class test_plugin{
    	function __construct()
            {
                register_activation_hook(__FILE__, array($this, 'plugin_activation'));
                register_deactivation_hook(__FILE__, array($this, 'plugin_deactivation'));
                register_uninstall_hook( __FILE__, 'plugin_uninstallation' );
            
           add_shortcode('my_custom_view_shortcode',array($this,'my_custom_view_handler'));
    
            }
            public static function my_custom_view_handler(){
                echo '<div>My view</div>';
            }
    }
    $test_plugin = new test_plugin();

    After activating plugin, I created new page and added shortcode to shortcode block like this [‘my_custom_view_shortcode’].
    And now, whenever I press publish or update button in any page/post which contains my custom shortcode [‘my_custom_view_shortcode’] will give me the error ‘Publishing/Updating failed. The response is not a valid JSON response.’
    I reloaded my page, all information was still saved in database and showed expected result ‘<div>My view</div>’.
    Can you help me how to fix that error? Thank you

  • Перейти к содержимому

    Однажды я установил WordPress в операционной системе Ubuntu Server с веб сервером Nginx и при попытке добавить новую статью увидел ошибку:

    Ошибка публикации. Сообщение об ошибке: Ответ не является допустимым ответом JSON.

    При обновлении существующей статьи тоже отображалась ошибка:

    Ошибка обновления. Сообщение об ошибке: Ответ не является допустимым ответом JSON.

    Если посмотреть инструмент «Здоровье сайта» (/wp-admin/site-health.php), то можно было увидеть ошибку:

    REST API выдал неожиданный результат
    404 Not Found
    nginx/1.14.0 (Ubuntu)
    

    Чтобы решить эти ошибки, а также чтобы работали произвольные ссылки (как на apache с rewrite), я открыл файл конфигурации сайта в nginx (например /etc/nginx/sites-enabled/ixnfo-com.conf) и нашел стандартные строки:

           location / {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                   try_files $uri $uri/ =404;
           }
    

    И заменил их на:

    location / { 
        try_files $uri $uri/ /index.php$is_args$args;
    }
    

    Потом проверил корректность конфигурации Nginx и перезапустил его чтобы применить изменения:

    sudo nginx -t
    sudo service nginx restart
    

    После этого ошибки исчезли.

    Смотрите также мою статью:
    Установка WordPress и Nginx

    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии

    А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Wp recall ошибка публикации error 101
  • Wp admin ошибка 404