Теги

    Комментарии (0)

      +
      T
      >

      BBPress free antispam and no capcha

      /* Превью

      Not a penny for calm

      */

      Максимально быстрый и простой способ убрать спам с форума BBPress для вордпеса.

      WTF

      Меняем название полей email и name в коде местами, тогда реальные пользователи не заметят подвоха, а боты будут вводить в поле name почту, тут то мы и будем отлавливать есть ли в поле name символ @ или нет, если есть значит бот

      Настройка вёрстки

      Заходим в форму

      
      #/bbpress/templates/default/bbpress/form-anonymous.php
      #Меняем названия полей name и email местами
      <p>
        <label for="bbp_anonymous_author"><?php esc_html_e( 'Mail (will not be published) (required):', 'bbpress' ); ?></label><br />
        <input type="text" id="bbp_anonymous_author"   value="<?php bbp_author_email(); ?>" size="40" maxlength="100" name="bbp_anonymous_name" />
      </p>
      

      Настройка логики

      
      #/bbpress/includes/common/functions.php
      # Ищем функцию отвечающую за обработку введённых полей bbp_filter_anonymous_post_data, и добавляем в начале код
      	// Antispam || TrywaR
      	// Поля email и name на сайте переименованы, если в name есть @ значит заполнял бот
      	if ( ! empty( $_POST['bbp_anonymous_email'] ) )
      	if (strripos($_POST['bbp_anonymous_email'], '@') === false) {
          // Заполнял человек, меняем значения обратно чтобы работало как надо
      		$sEmail = $_POST['bbp_anonymous_name'];
      		$sName = $_POST['bbp_anonymous_email'];
      		$_POST['bbp_anonymous_email'] = $sEmail;
      		$_POST['bbp_anonymous_name'] = $sName;
      	} else {
      		// В имени есть @, заполнял бот, пишем что ошибка в @, а то вдруг это человек всё таки в имени пишет @
      		bbp_add_error( 'bbp_anonymous_name',  __( 'Error: Invalid author name. Not use "@".', 'bbpress' ) );
      	}
      

      Готово

      Посолить по перчить по вкусу

      Минусы такого подхода, при обнове BBPress все слетит к херам, чтобы восстановить и есть эта заметка