@vovander84

При добавлении комментария в посте выдает Service Unavailable как пофиксить?

Доброго времени.
Есть сайты установленные из одной сборки ,потом уже менялась тема и все такое.
С недавнего времени заметил, что при отправке комментария в посте выдает Service Unavailable.
Такая беда не на всех, есть сайты на этой же сборке с корректной оправкой комментариев.

Если установить дефолтyую тему ВП, все работает.

wp debug ничего не показал по этому поводу, есть ошибка планигина сайтмап, отключал ничего не менялось.
Логи на хостинге тоже не показали ничего с комментами связанное.

88875be3b3b7f0fca199427bd8a43f06.png

может кто сталкивался, в чем может быть проблема ?
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ответы на вопрос 2
@m0ze
The Gunner
Текст ошибки говорит о том, что в данном случае веб-сервер не может получить корректный ответ от PHP-скрипта (плагин, тема или сниппет).

Такая беда не на всех, есть сайты на этой же сборке с корректной оправкой комментариев.

>>
Есть сайты установленные из одной сборки ,потом уже менялась тема и все такое.

>>
Если установить дефолтyую тему ВП, все работает.

Смотрите код активной темы :)

Логи на хостинге тоже не показали ничего с комментами связанное.

Причина может быть и не в этом. Какие ошибки вообще есть?
Ответ написан
@vovander84 Автор вопроса
я кажется немного понял в чем подвох. я забыл, что у меня стояла антиспам защита в виде кода. перестала работать почему-то выдает Service Unavailable при любом раскладе
// spam filter

add_filter( 'comment_form_default_fields', 'add_antispam_field_to_comment_form' ); 
add_filter( 'comment_form_fields', 'add_antispam_field_to_comment_form' ); 
function add_antispam_field_to_comment_form($fields) { //Эта функция добавляем поле с именем csrf в форму
    $fields['csrf'] = '
	<input type="text" name="csrf" required style="display:none"> //добавляем само поле
	<script>document.getElementsByName("csrf")[0].value="'.time().'"</script> //заполняем его текущей меткой времени через Javascript
	';
    return $fields;
}

add_action( 'pre_comment_on_post', 'action_check_hidden_field' );
function action_check_hidden_field( $comment_post_ID ){ //Функция проверяет прошло ли Х секунд с между моментом отрисовки страницы и отправкой комментария.
	$human_pause = 30; //это и есть Х., т.е. в данном случае Х = 30 секунд
	if (!isset($_POST['csrf']) || ((time() - intval($_POST['csrf'])) < $human_pause) || !preg_match('/\d{10}/',$_POST['csrf'])) { //Если поле пришло пустое, коммент запостили раньше чем через Х секунд, или в коменте пришла какая то ерунда, а не метка времени ... 
		wp_die('Service Unavailable','Service Unavailable', 503); // .. то покажем ошибку и коммент не запостим
	}
}

//Опционально, можно не вставлять.
function remove_form_novalidate() {
    remove_theme_support( 'html5' ); //уберем поддержку html5 в нашей теме, чтоб снизить нагрузку на хостинг, в случае если спам-агрегат работает через свой браузер - он не даст ему отправить комментарий и он даже не дойдет до обработчика
}


убираю работает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы