رفتن به مطلب

آموزش اضافه کردن recaptcha google به سایت بدون افزونه


sir1

پست های پیشنهاد شده

آموزش اضافه کردن recaptcha google به سایت بدون افزونه

یکی از مشکلاتی که برای همه سایت های وردپرسی وجود داره اسپمرهایی هستند که اگر جلو آنها را نگیرید باعث هک شدن سایت یا کاهش امنیت سایت می شوند.

در این بخش میخواهیم recaptcha google را برای نظرات سایت و ثبت نام وردپرس فعال کنیم.

برای فعال کردن کپچا بخش ثبت نام وردپرس که آدرسش https://domin.com/wp-login.php?action=register است کد زیر را به انتهای فایل functions.php قالب اضافه کنید.

/*=Add ReCaptcha to registration form
/****************************************************/
function oley_add_recaptcha_field() {
    ?>
	<script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <p>
        <label for="recaptcha"><br />
            <div class="g-recaptcha" data-sitekey="your_site_key_goes_here"></div>
        </label>
    </p>
    <?php
}
add_action( 'register_form', 'oley_add_recaptcha_field' );

function oley_validate_recaptcha_field( $errors, $sanitized_user_login, $user_email ) {

    if ( empty( $_POST['g-recaptcha-response'] ) ) {
        $errors->add( 'recaptcha_error', __( '<strong>ERROR</strong>: Please verify that you are not a robot.', 'oleymediagroup' ) );
    }

    return $errors;
}
add_filter( 'registration_errors', 'oley_validate_recaptcha_field', 10, 3 );

در کد بالا به جای your_site_key_goes_here کلید  site key خود را وارد کنید.(دریافت site key و secret key) حالا صفحه ثبت نام را ریفرش کنید و تست کنید که کپچا کار می کند یا نه. بخش نام کاربری و ایمیل را پر کنید و بدون تیک زدن کپچا روی ثبت نام کلیک کنید در این حالت باید خطای کپچا را دریافت کنید.

بخش دوم:

برای فعال کردن کپچا در نظرات کد زیر را به فایل single.php قالب قبل از تابع get_header(); قرار دهید.

 wp_enqueue_script('google-recaptcha','https://www.google.com/recaptcha/api.js');

و سپس کد زیر را به فایل فانکشن اضاف کنید

/**
 * Google recaptcha add before the submit button
 */
function add_google_recaptcha($submit_field) {
    $submit_field['submit_field'] = '<div class="g-recaptcha" data-sitekey="your_site_key"></div><br>' . $submit_field['submit_field'];
    return $submit_field;
}
if (!is_user_logged_in()) {
    add_filter('comment_form_defaults','add_google_recaptcha');
}
 
/**
 * Google recaptcha check, validate and catch the spammer
 */
function is_valid_captcha($captcha) {
$captcha_postdata = http_build_query(array(
                            'secret' => 'your_secret_key',
                            'response' => $captcha,
                            'remoteip' => $_SERVER['REMOTE_ADDR']));
$captcha_opts = array('http' => array(
                      'method'  => 'POST',
                      'header'  => 'Content-type: application/x-www-form-urlencoded',
                      'content' => $captcha_postdata));
$captcha_context  = stream_context_create($captcha_opts);
$captcha_response = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify" , false , $captcha_context), true);
if ($captcha_response['success'])
    return true;
else
    return false;
}
 
function verify_google_recaptcha() {
$recaptcha = $_POST['g-recaptcha-response'];
if (empty($recaptcha))
    wp_die( __("<b>ERROR:</b> please select <b>I'm not a robot!</b><p><a href='javascript:history.back()'>« Back</a></p>"));
else if (!is_valid_captcha($recaptcha))
    wp_die( __("<b>Go away SPAMMER!</b>"));
}
if (!is_user_logged_in()) {
    add_action('pre_comment_on_post', 'verify_google_recaptcha');
}

در کد بالا هم باید توجه کنید که به جای your_site_key و your_secret_key کلیدهای خود را قرار دهید.

این آموزش روی قالب پیشفرض وردپرس انجام و تست شده است.

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...