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

    @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 в нашей теме, чтоб снизить нагрузку на хостинг, в случае если спам-агрегат работает через свой браузер - он не даст ему отправить комментарий и он даже не дойдет до обработчика
    }


    убираю работает
    Ответ написан
    Комментировать