开发者 | sandydev |
---|---|
更新时间 | 2018年5月23日 19:53 |
PHP版本: | 5.4 及以上 |
WordPress版本: | 4.9.1 |
版权: | GPLv2 or later |
版权网址: | 版权信息 |
smart-recaptcha
folder to the /wp-content/plugins/
directory.Follow the next steps in order to get and enable Smart Captcha (reCAPTCHA) Smart Captcha keys:
You should go to the Settings page and select the roles, for which you want to hide Smart Captcha. Then you must click "Save Changes" button.
You might have a theme where "comments.php" is coded incorrectly. Wordpress version matters.
(WP2 series): Make sure that you theme contains a tag <?php do_action('comment_form', $post->ID); ?>
inside the file /wp-content/themes/[your_theme]/comments.php.
Most WP2 themes already have it. The best place to put this tag is before the comment text area, you can move it up if it is below the comment text area.
(WP3 series): WP3 has a new function comment_form inside of /wp-includes/comment-template.php.
Your theme is probably not up-to-date to call that function from "comments.php".
WP3 theme does not need the code line do_action('comment_form'… inside of /wp-content/themes/[your_theme]/comments.php.
Instead it uses a new function call inside of "comments.php": <?php comment_form(); ?>
If you have WP3 and captcha is still missing, make sure your theme has <?php comment_form(); ?>
inside of /wp-content/themes/[your_theme]/comments.php (please check the Twenty Ten theme’s "comments.php" for proper example).
It depends on the comments form. If the hook call by means of which captcha works ('after_comment_field' or something like this) is present in the file comments.php, you can change captcha positioning by moving this hook call. Please find the file 'comments.php' in the theme and change position of the line
do_action( 'comment_form_after_fields' );
or any similar line - place it under the Submit button.
In case there is no such hook in the comments file of your theme, then, unfortunately, this option is not available.
Follow the instructions below in order to add Smart Captcha (reCAPTCHA) plugin to your custom PHP or HTML form:
function add_custom_recaptcha_forms( $forms ) { $forms['my_custom_form'] = array( "0" => "Custom Form Name" ); return $forms; } add_filter( 'smtcptc_add_form', 'add_custom_recaptcha_forms' );
<?php echo apply_filters( 'smtcptc_display', '', 'my_custom_form' ); ?>
In this example, the second parameter is a slug of your custom form.
Otherwise, insert the following line:
<?php echo apply_filters( 'smtcptc_display', '' ); ?>
<?php $check_result = apply_filters( 'smtcptc_verify', true, 'string', 'my_custom_form' ); if ( true === $check_result ) { /* the reCAPTCHA answer is right */ /* do necessary action */ } else { /* the reCAPTCHA answer is wrong or there are some other errors */ echo $check_result; /* display the error message or do other necessary actions in case when the reCAPTCHA test was failed */ } ?>
In this example, the third parameter is a slug of your custom form.
Otherwise, insert the following lines:
<?php $check_result = apply_filters( 'smtcptc_verify', true, 'string' ); if ( true === $check_result ) { /* the reCAPTCHA answer is right */ /* do necessary action */ } else { /* the reCAPTCHA answer is wrong or there are some other errors */ echo $check_result; /* display the error message or do other necessary actions in case when the reCAPTCHA test was failed */ } ?>
If there is a variable in the check function responsible for the errors output, you can concatenate variable $check_result to this variable. If the 'smtcptc_verify' filter hook returns 'true', it means that you have entered the reCAPTCHA answer properly. In all other cases, the function will return the string with the error message.
If you have followed all steps, but the problem remains, we can help you to configure your Smart Captcha custom form. This will be a paid service since there are a lot of different custom forms and the code should be inserted individually into each of them, so we need some time to study each unique case.
Please make sure that the problem hasn't been discussed yet on our forum . If no, please provide the following data along with your problem's description: