Support » Fixing WordPress » ReCaptcha error when submitting comments

  • In WooCommerce for WordPress, when any other user but the WP admin tries to post a product review (which is a WP comment), they receive the following message:

    “The reCAPTCHA wasn’t entered correctly. Please use your browsers back button and try again.”

    ReCAPTCHA is NOT installed anywhere in WP. In Settings>Discussions we already unchecked “uses must be registered and logged in to comment”, while trying every possible solution.

    The theme is Twenty Seventeen. WooCommerce denies that it is a WC setting and says it is WP comments setting, which appears to be true because the error link is /wp-comments-post.php.

    This is so exhausting. Hours spent trying to find why reCaptcha is involved when it is not set anywhere on the website.

    Just in case, we do have reCaptcha codes because we previously used a WPForms Contact form with reCaptcha v2. WPForms have been removed since then.

    Please help.

    The page I need help with: [log in to see the link]

Viewing 7 replies - 1 through 7 (of 7 total)
  • Thread Starter artyshake

    (@artyshake)

    This is wp-comments-post.php:

    <?php
    /**
     * Handles Comment Post to WordPress and prevents duplicate comment posting.
     *
     * @package WordPress
     */
    
    if ( 'POST' !== $_SERVER['REQUEST_METHOD'] ) {
    	$protocol = $_SERVER['SERVER_PROTOCOL'];
    	if ( ! in_array( $protocol, array( 'HTTP/1.1', 'HTTP/2', 'HTTP/2.0' ), true ) ) {
    		$protocol = 'HTTP/1.0';
    	}
    
    	header( 'Allow: POST' );
    	header( "$protocol 405 Method Not Allowed" );
    	header( 'Content-Type: text/plain' );
    	exit;
    }
    
    /** Sets up the WordPress Environment. */
    require __DIR__ . '/wp-load.php';
    
    nocache_headers();
    
    $comment = wp_handle_comment_submission( wp_unslash( $_POST ) );
    if ( is_wp_error( $comment ) ) {
    	$data = (int) $comment->get_error_data();
    	if ( ! empty( $data ) ) {
    		wp_die(
    			'<p>' . $comment->get_error_message() . '</p>',
    			__( 'Comment Submission Failure' ),
    			array(
    				'response'  => $data,
    				'back_link' => true,
    			)
    		);
    	} else {
    		exit;
    	}
    }
    
    $user            = wp_get_current_user();
    $cookies_consent = ( isset( $_POST['wp-comment-cookies-consent'] ) );
    
    /**
     * Perform other actions when comment cookies are set.
     *
     * @since 3.4.0
     * @since 4.9.6 The <code>$cookies_consent</code> parameter was added.
     *
     * @param WP_Comment $comment         Comment object.
     * @param WP_User    $user            Comment author's user object. The user may not exist.
     * @param bool       $cookies_consent Comment author's consent to store cookies.
     */
    do_action( 'set_comment_cookies', $comment, $user, $cookies_consent );
    
    $location = empty( $_POST['redirect_to'] ) ? get_comment_link( $comment ) : $_POST['redirect_to'] . '#comment-' . $comment->comment_ID;
    
    // If user didn't consent to cookies, add specific query arguments to display the awaiting moderation message.
    if ( ! $cookies_consent && 'unapproved' === wp_get_comment_status( $comment ) && ! empty( $comment->comment_author_email ) ) {
    	$location = add_query_arg(
    		array(
    			'unapproved'      => $comment->comment_ID,
    			'moderation-hash' => wp_hash( $comment->comment_date_gmt ),
    		),
    		$location
    	);
    }
    
    /**
     * Filters the location URI to send the commenter after posting.
     *
     * @since 2.0.5
     *
     * @param string     $location The 'redirect_to' URI sent via $_POST.
     * @param WP_Comment $comment  Comment object.
     */
    $location = apply_filters( 'comment_post_redirect', $location, $comment );
    
    wp_safe_redirect( $location );
    exit;
    Thread Starter artyshake

    (@artyshake)

    And in case this helps, this is when inspecting the review form:
    Screenshot

    Thread Starter artyshake

    (@artyshake)

    P.S. I reinstalled WPForms because we need the Contact form to work. As you will see on the contact page, recaptcha works fine there. However, on product review pages, not only recaptcha is not visible (and it is not installed), but it returns an error.

    Moderator Steven Stern (sterndata)

    (@sterndata)

    Forum Moderator & Support Team Volunteer

    Are you using Jetpack comments, perhaps? Core WP does not have recaptcha.

    Thread Starter artyshake

    (@artyshake)

    Oh. Yes, we do use Jetpack. That would narrow it down, thank you. Can you help me find where in Jetpack it can be addressed?

    Also, we just realized that guest reviews work. Captcha shows in guest reviews. The error is specific to logged in users except the WP admin.

    Thread Starter artyshake

    (@artyshake)

    Deactivating Jetpack did not resolve the error.

    Moderator Steven Stern (sterndata)

    (@sterndata)

    Forum Moderator & Support Team Volunteer

    It’s got to be a plugin….

    This may be a plugin or theme conflict. Please attempt to disable all plugins, and use one of the default (Twenty*) themes. If the problem goes away, enable them one by one to identify the source of your troubles.

    If you can install plugins, install “Health Check”: https://wordpress.org/plugins/health-check/ On the troubleshooting tab, you can click the button to disable all plugins and change the theme for JUST you, while you’re still logged in, without affecting normal visitors to your site. You can then use its admin bar menu to turn on/off plugins and themes one at a time. See https://make.wordpress.org/support/handbook/appendix/troubleshooting-using-the-health-check/ or https://rankmath.com/kb/check-plugin-conflicts/ for more information.

    See http://www.wpbeginner.com/plugins/how-to-deactivate-all-plugins-when-not-able-to-access-wp-admin/

Viewing 7 replies - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.