WordPress как на ладони
wordpress jino

Почему перестала работать защита от спама без плагинов WordPress?

Здравствуйте, код работал всегда

add_filter('pre_comment_on_post', 'verify_spam');

function verify_spam($commentdata) {
  $spam_test_field = trim($_POST['comment']);
  if(!empty($spam_test_field)) wp_die('Спаму нет!');
  $comment_content = trim($_POST['real-comment']);
  $_POST['comment'] = $comment_content;
  return $commentdata;
}

После обновления перестал работать, как исправить?

0
Гость 1.7 года назад
  • 0
    Leon10102 cайт: i-leon.ru

    Тоже интересует этот вопрос.
    В последнем обновлении полностью перестроена структура файла wp-comments-post.php и переменной $commentdata в нем больше нет, думаю причина в этом.

    Зато теперь есть объект $comment, который имеет похожую структуру.
    Попробуй просто заменить $commentdata на $comment

    Андрей 1.7 года назад

    Почему нету)
    2626 строка comments.php

    function wp_handle_comment_submission( $comment_data )
    Вот эта функция и обрабатывает

    Я могу дать код, который будет работать как и прошлый)
    Но при любой обнове он слетит и заново нужно будет менять

    Комментировать
  • 0
    Kama4486

    Во-первых этот хук немного по-другому должен выглядит, но это не имеет значения, технически правильно так:

    add_action('pre_comment_on_post', 'verify_spam');
    
    function verify_spam( $comment_post_ID ) {
      $spam_test_field = trim($_POST['comment']);
      if(!empty($spam_test_field)) wp_die('Спаму нет!');
      $comment_content = trim($_POST['real-comment']);
      $_POST['comment'] = $comment_content;
    }

    Проблема у вас не в этом хуке, а в том что с новой версией не добавляется или неправильно добавляется поле 'real-comment', которое подменяет поле текста комментария.

    Вы еще тот код скиньте, который добавляет это поле к форме комментирования. Проблема где-то там... Текст комментария не подменяется...

    Андрей 1.7 года назад

    там руками вставляется real-comment

    Роман 5 месяцев назад

    Вот два варианта решения проблемы нашёл, если кому ещё нужно.
    Через добавление файла в движок:
    https://truemisha.ru/blog/wordpress/block-autospam-comments.html
    Или есть вариант повесить код на хук init:
    http://seorubl.ru/razrabotka-saytov/zashhita-ot-spama-v-kommentariyah-bez-plaginov/

    Kama 5 месяцев назад

    вот тут отвечал на этот вопрос... https://wp-kama.ru/question/zashhita-ot-spama

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.