Не выводится «Ваш комментарий ожидает проверки» — WordPress 4.9.6+

В общем да, совершенно случайно обнаружил, что перестала выводится надпись «Ваш комментарий ожидает проверки», при добавлении новых комментариев на моих сайтах на движке WordPress. Думаю, что за срань происходит?!

Сначала начал грешить на кривонастроенный кеш nginx. Но нет, перепроверил, все было там ок.
Видимо, что-то с кодом не так. Начал разбираться… Хоть убейся об стену, все тоже вроде ОК.

Закрались сомнения, «а был ли мальчик»(с). Блин может она уже давно не работала?? Ну если так, все равно надо починить, а то как-то совсем не торт!

К слову сказать, у меня немного модифицированная форма комментов. (Убрал добавление адреса, чтоб не спамили..)

Вспоминаю, что на днях обновлял сайты. Значит, что-то с обновой прилетело.
Лезу в исходники… пока все норм.

И тут я вспоминаю про одну херню, не давно появившуюся — GDPR

ДА-ДА! Блеать, именно GDPR всему виной!

Сколько же было снова лучей поноса в их адрес… :D

Короче, суть в чем, нужно в форму комментов добавить сраную галочку — о том что, мол: Да Я хочу «Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев.»

В общем добавил. И вот чтобы теперь лицезреть «Ваш комментарий ожидает проверки» — Вначале нужно цикнуть эту галочку. Если этого не сделать, коммент все равно уйдет на проверку, но страница просто перезагрузится, а Вам ничего не сообщит…

Да-да! Вот такой вот костыль… Жиззь в новых реалиях.

Ну, это была лирика..:)

Вот что надо сделать.

В файл comments.php нужно добавить 2 строчки:

$consent   = empty( $commenter['comment_author_email'] ) ? '' : ' checked="checked"';
'cookies'	=> '<p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"' .
                    $consent . ' />' . '<label for="wp-comment-cookies-consent">' . __( 'Save my name, email, and website in this browser for the next time I comment.' ) . '</label></p>',

Приведу пример своего файла, думаю разберетесь:

<?php 
$commenter = wp_get_current_commenter();
$req = get_option( 'require_name_email' );
$aria_req = ( $req ? " aria-required='true'" : '' );
$consent = empty( $commenter['comment_author_email'] ) ? '' : ' checked="checked"';
$fields = array(
'author' => '<p class="comment-form-author">'.
'<input id="author" name="author" type="text" '. ( $req ? 'required ' : '' ) .' placeholder="'. __( 'Name' ) . '" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
'email' => '<p class="comment-form-email">'.
'<input id="email" name="email" type="text" '. ( $req ? 'required ' : '' ) .' placeholder="'. __( 'Email' ) . '" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
'cookies' => '<p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"' . $consent . ' />' . '<label for="wp-comment-cookies-consent">' . __( 'Save my name and email in this browser for the next time I comment.' ) . '</label></p>',
);

$comments_args = array(
'fields' => $fields,
'comment_notes_before' => '',
// 'comment_notes_after' => '<p class="comment-notes">' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>',
'comment_field' => '<p class="comment-form-comment">' .
'<textarea id="comment" name="comment" cols="45" rows="4" aria-required="true" placeholder="'. __( 'Add your comment...' ) . '">' .
'</textarea></p>',
// 'title_reply' => 'Add Your Comment',
'title_reply' => '',
'label_submit' => 'Submit'
);

comment_form($comments_args);
?>

Ну и для «красоты» в css:

#respond form p.comment-form-cookies-consent{float:left;width:70%;font-size:12px;color:#777;}
#respond form p.comment-form-cookies-consent  input[type="checkbox"]{width:4%;cursor:pointer;float:left}
#respond form p.comment-form-cookies-consent  label{width:93%;cursor:pointer}
.comment-awaiting-moderation{color:#fff;display:block;background:#78909C;padding:8px;}

Получится что-то типа того:

Вроде все. Если возникли вопросы, пишите в комментарии :D

Запись опубликована в рубрике: Wordpress.

5 комментариев: Не выводится «Ваш комментарий ожидает проверки» — WordPress 4.9.6+

  1. Андрей говорит:

    Пост в топ поисковиков однозначно! Сколько же страниц по этой теме было пересмотрено и сколько мата прозвучало в процессе…

    Тоже заметил, что не выводится надпись «Ваш комментарий ожидает проверки». Много чего пролистал, пока не нашел эту страницу. Сначала нашел на другом блоге пост о том, что виной плагин Hyper Cache. Смотрю: действительно такой у меня имеется. Отключил — ни фига. Удалил — ни фига. Продолжил свои искания. Даже на других блогах стал пробовать комментарии отправлять — тоже надпись не выводится. Тут я уже заподозрил, что это что-то глобальное.

    И вот оно наконец, объяснение! СПАСИБО!!!

    А как решить вопрос без добавления галочки? Она мне вообще не нужна. Я у себя на сайте чтоб упростить комментирование и не нарушать всю эту лабуду о персональных данных убрал поля «Сайт» и «E-mail». Поле «Имя» переназвал «Ник (необязательно)» и убрал галочку в админке «Автор комментария должен указать имя и e-mail «.

    Теперь кроме текста комментария можно вообще ничего не указывать. Соответственно, и сохранять в браузере для последующих комментариев тоже нечего.

    • Zajtcev говорит:

      :D Рад что помогло
      Самое простое, что приходит в голову:

      $consent   = empty( $commenter['comment_author_email'] ) ? '' : ' checked="checked"';

      Замените на

      $consent   =  ' checked="checked"';

      и в css

      #respond form p.comment-form-cookies-consent{display:none}
  2. Влад говорит:

    Спасибо, реально помогли прям!!!

  3. kos говорит:

    Вариант решения отключить всё это, вот так:

    add_action(‘init’, ‘disable_gdpr_stuff’);

    function disable_gdpr_stuff() {
    // eliminate comment checkbox
    add_filter( ‘comment_form_default_fields’, ‘disable_gdpr_kill_cookie_consent_checkbox’ );

    // force comment cookies to be on
    remove_action( ‘set_comment_cookies’, ‘wp_set_comment_cookies’, 10, 3 );
    add_action( ‘set_comment_cookies’, ‘disable_gdpr_force_comment_cookies’, 10, 3 );
    }

    function disable_gdpr_kill_cookie_consent_checkbox( $fields ) {
    unset( $fields[‘cookies’] );
    return $fields;
    }

    function disable_gdpr_force_comment_cookies( $comment, $user, $cookies_consent ) {
    wp_set_comment_cookies( $comment, $user, true );
    }

  4. Кирилл говорит:

    Отличное решение, спасибо! :-)

Добавить комментарий

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

Комментарии