/ Плагины / Защита Woocommerce от СПАМа

Защита Woocommerce от СПАМа

HIT

18.09.2022

1141

Защитим разные формы Woocommerce от надоедливого СПАМа.

Защита форма регистрации

Функция по защите формы регистрации, без плагина.

Включаем скрипт

// Подключение reCaptcha

add_action('wp_head', 'wp34_add_recaptcha');
function wp34_add_recaptcha() {?>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
<?php }

Далее регистрируем сайт в сервисе Google reCaptcha (тестировал на v2, работает) добавляем в форму регистрации (файл woocommerce/myaccount/form-login.php) специальный блок:

<form class="woocommerce-form woocommerce-form-login login" method="post">

	<?php do_action( 'woocommerce_login_form_start' ); ?>

	<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
		<label for="username"><?php esc_html_e( 'Username or email address', 'woocommerce' ); ?>&nbsp;<span class="required">*</span></label>
		<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="username" id="username" autocomplete="username" value="<?php echo ( ! empty( $_POST['username'] ) ) ? esc_attr( wp_unslash( $_POST['username'] ) ) : ''; ?>" /><?php // @codingStandardsIgnoreLine ?>
	</p>
	<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
		<label for="password"><?php esc_html_e( 'Password', 'woocommerce' ); ?>&nbsp;<span class="required">*</span></label>
		<input class="woocommerce-Input woocommerce-Input--text input-text" type="password" name="password" id="password" autocomplete="current-password" />
	</p>

	<?php do_action( 'woocommerce_login_form' ); ?>

	<p class="form-row">
		<label class="woocommerce-form__label woocommerce-form__label-for-checkbox woocommerce-form-login__rememberme">
			<input class="woocommerce-form__input woocommerce-form__input-checkbox" name="rememberme" type="checkbox" id="rememberme" value="forever" /> <span><?php esc_html_e( 'Remember me', 'woocommerce' ); ?></span>
		</label>
		<?php wp_nonce_field( 'woocommerce-login', 'woocommerce-login-nonce' ); ?>
		<button type="submit" class="woocommerce-button button woocommerce-form-login__submit" name="login" value="<?php esc_attr_e( 'Log in', 'woocommerce' ); ?>"><?php esc_html_e( 'Log in', 'woocommerce' ); ?></button>
	</p>
	<p class="woocommerce-LostPassword lost_password">
		<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php esc_html_e( 'Lost your password?', 'woocommerce' ); ?></a>
	</p>
	
	<!-- Add reCaptcha here -->
        <div class="g-recaptcha" data-sitekey="КЛЮЧ САЙТА !!!"></div>
        
	<?php do_action( 'woocommerce_login_form_end' ); ?>

</form>

И добавляем функцию проверки этого поля

// Внедрение проверки reCaptcha в форму регистрации
// В самой форме регистрации (woocommerce/myaccount/form-login.php) нужно добавить
// <div class="g-recaptcha" data-sitekey="your_site_key"></div>

add_action( 'woocommerce_register_post', 'woo6912_validate_recaptcha_field', 10, 3 );
function woo6912_validate_recaptcha_field( $username, $email, $wpErrors ) {
    $remoteIP = $_SERVER['REMOTE_ADDR'];
    $recaptchaResponse = $_POST['g-recaptcha-response'];

    $response = wp_remote_post( 'https://www.google.com/recaptcha/api/siteverify', [
        'body' => [
            'secret'   => 'СЕКРЕТНЫЙ КЛЮЧ !!!',
            'response' => $recaptchaResponse,
            'remoteip' => $remoteIP
        ]
    ] );

    $response_code = wp_remote_retrieve_response_code( $response );
    $response_body = wp_remote_retrieve_body( $response );

    if ( $response_code == 200 )
    {
        $result = json_decode( $response_body, true );

        if ( ! $result['success'] )
        {
            switch ( $result['error-codes'] )
            {
                case 'missing-input-secret':
                case 'invalid-input-secret':
                    $wpErrors->add( 'recaptcha', __( '<strong>ОШИБКА</strong>: Неверный ключ reCAPTCHA.', 'woocommerce' ) );
                    break;

                case 'missing-input-response' :
                case 'invalid-input-response' :
                    $wpErrors->add( 'recaptcha', __( '<strong>ОШИБКА</strong>: Поставьте галочку, чтобы подтвердить, что вы не робот.', 'woocommerce' ) );
                    break;

                default:
                    $wpErrors->add( 'recaptcha', __( '<strong>ОШИБКА</strong>: Что-то пошло не так при проверке reCAPTCHA.', 'woocommerce' ) );
                    break;
            }
        }
    }
    else
    {
        $wpErrors->add( 'recaptcha_error', __( '<strong>Error</strong>: Unable to reach the reCAPTCHA server.', 'woocommerce' ) );
    }
}

Защита отзывов к товарам

Плагин reCAPTCHA in WP comments form (10 000)

Работает плагин корректно. Простые настройки и функционал.

[site-socialshare]
  • Похожие записи
  • Комментарии
  • Вложения
Обзор плагинов по созданию скидок

Обзор плагинов по созданию скидок

Рассмотрим различные плагины по созданию функционала скидок. Рассматриваться будут плагины которые предоставляют возможность комплексного формирования скидок на состав корзины. Практически все плагины в обзоре могут в бесплатной версии предоставить простой Читать далее »

Настраиваем woocommerce

Настраиваем woocommerce

Настраиваем различные аспекты плагина woocommerce, под текущие задачи. Ваша корзина пуста Шаблон для настроек страницы корзины (когда она пуста) находится в папке woocommerce (локализованная в теме)/cart/cart-empty.php Можно отцентрировать и добавить Читать далее »

/
Атрибуты товара WC

Атрибуты товара WC

В интернет-магазине Woocommerce есть функционал атрибутов. Атрибуты товара — это дополнительные поля для различных значений. Атрибуты бывают 2-х типов: текстовый (text) и с выбором значения (select). Архив значения атрибута Для Читать далее »

/

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

Notice: Функция WP_Styles::add вызвана неправильно. Стиль с дескриптором "editor-buttons" был поставлен в очередь с незарегистрированными зависимостями: dashicons. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.9.1.) in /home/t/tiberi6w/opttour.ru/public_html/wp-includes/functions.php on line 6170

Пока нет комментариев. Будь первым!

Защита Woocommerce от СПАМа
Изменение конфигурации объекта
Рекомендации для васИзменение конфигурации объектаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.