• From the faq:

    Sometimes the captcha image and captcha input field are displayed AFTER the submit button on the comment form.
    Your theme must have a <?php do_action(‘comment_form’, $post->ID); ?> tag inside your comments.php form. Most themes do. The best place to locate the tag is before the comment textarea, you may want to move it if it is below the comment textarea. This tag is exactly where the captcha image and captcha code entry will display on the form, so move the line to before the comment textarea, uncheck the ‘Comment Form Rearrange’ box on the ‘Captcha options’ page, and the problem should be fixed.

    Well, I’m totally an idiot in this thing and didn’t know where I should move the tag. I mean I know where this comment.php located but no clue about the comment textarea. Can someone help point out where I had to move the <? Php do_action (‘comment_form’, $ post-> ID);?> so the captcha image and captcha input appear on the right place (be4 the submit button). Thanks.

    BTW I use WP 2.9.2 and Arras theme.

Viewing 15 replies - 1 through 15 (of 16 total)
  • On that theme…. move it here:

    <?php do_action('comment_form', $post->ID); ?>
        <p>
         <textarea name="comment" id="s4" cols="50" rows="10" tabindex="4" class="required"></textarea>
        </p>
    Thread Starter sonic_gear

    (@sonic_gear)

    Thanks Mike…

    More info for others who may find this thread…

    When diagnosing missing CAPTCHA field on comment form….
    The version of WP makes a difference…

    (WP 2 series) Your theme must have a <?php do_action('comment_form', $post->ID); ?> tag inside your comments.php form. Most themes do. The best place to locate the tag is before the comment textarea, you may want to move it if it is below the comment textarea.

    (WP 3 series with a proper WP3 theme does not need this step, but if you have WP3 update to plugin version 2.5.2 or higher, if you still have the missing captcha, try above WP Series 2 steps)

    Thanks Mike. I do not see the line of code above in my comment.php file. I am pasting the file below. Will really appreciate it if you could tell me where to insert your line of code.
    Thank you.

    <?php
    /**
     * Comment Management Panel
     *
     * @package WordPress
     * @subpackage Administration
     */
    
    /** Load WordPress Bootstrap */
    require_once('admin.php');
    
    $parent_file = 'edit-comments.php';
    $submenu_file = 'edit-comments.php';
    
    wp_reset_vars( array('action') );
    
    if ( isset( $_POST['deletecomment'] ) )
    	$action = 'deletecomment';
    
    if ( 'cdc' == $action )
    	$action = 'delete';
    elseif ( 'mac' == $action )
    	$action = 'approve';
    
    if ( isset( $_GET['dt'] ) ) {
    	if ( 'spam' == $_GET['dt'] )
    		$action = 'spam';
    	elseif ( 'trash' == $_GET['dt'] )
    		$action = 'trash';
    }
    
    /**
     * Display error message at bottom of comments.
     *
     * @param string $msg Error Message. Assumed to contain HTML and be sanitized.
     */
    function comment_footer_die( $msg ) {
    	echo "<div class='wrap'><p>$msg</p></div>";
    	include('admin-footer.php');
    	die;
    }
    
    switch( $action ) {
    
    case 'editcomment' :
    	$title = __('Edit Comment');
    
    	wp_enqueue_script('comment');
    	require_once('admin-header.php');
    
    	$comment_id = absint( $_GET['c'] );
    
    	if ( !$comment = get_comment( $comment_id ) )
    		comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'javascript:history.go(-1)') );
    
    	if ( !current_user_can('edit_post', $comment->comment_post_ID) )
    		comment_footer_die( __('You are not allowed to edit comments on this post.') );
    
    	if ( 'trash' == $comment->comment_approved )
    		comment_footer_die( __('This comment is in the Trash. Please move it out of the Trash if you want to edit it.') );
    
    	$comment = get_comment_to_edit( $comment_id );
    
    	include('edit-form-comment.php');
    
    	break;
    
    case 'delete'  :
    case 'approve' :
    case 'trash'   :
    case 'spam'    :
    
    	require_once('admin-header.php');
    
    	$comment_id = absint( $_GET['c'] );
    	$formaction    = $action . 'comment';
    	$nonce_action  = 'approve' == $action ? 'approve-comment_' : 'delete-comment_';
    	$nonce_action .= $comment_id;
    
    	if ( !$comment = get_comment_to_edit( $comment_id ) )
    		comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit.php') );
    
    	if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) )
    		comment_footer_die( 'approve' != $action ? __('You are not allowed to delete comments on this post.') : __('You are not allowed to edit comments on this post, so you cannot approve this comment.') );
    ?>
    <div class='wrap'>
    
    <div class="narrow">
    <?php
    switch ( $action ) {
    	case 'spam' :
    		$caution_msg = __('You are about to mark the following comment as spam:');
    		$button      = __('Spam Comment');
    		break;
    	case 'trash' :
    		$caution_msg = __('You are about to move the following comment to the Trash:');
    		$button      = __('Trash Comment');
    		break;
    	case 'delete' :
    		$caution_msg = __('You are about to delete the following comment:');
    		$button      = __('Permanently Delete Comment');
    		break;
    	default :
    		$caution_msg = __('You are about to approve the following comment:');
    		$button      = __('Approve Comment');
    		break;
    }
    ?>
    
    <p><strong><?php _e('Caution:'); ?></strong> <?php echo $caution_msg; ?></p>
    
    <table class="form-table comment-ays">
    <tr class="alt">
    <th scope="row"><?php _e('Author'); ?></th>
    <td><?php echo $comment->comment_author; ?></td>
    </tr>
    <?php if ( $comment->comment_author_email ) { ?>
    <tr>
    <th scope="row"><?php _e('E-mail'); ?></th>
    <td><?php echo $comment->comment_author_email; ?></td>
    </tr>
    <?php } ?>
    <?php if ( $comment->comment_author_url ) { ?>
    <tr>
    <th scope="row"><?php _e('URL'); ?></th>
    <td><a href="<?php echo $comment->comment_author_url; ?>"><?php echo $comment->comment_author_url; ?></a></td>
    </tr>
    <?php } ?>
    <tr>
    <th scope="row" valign="top"><?php /* translators: field name in comment form */ echo _x('Comment', 'noun'); ?></th>
    <td><?php echo $comment->comment_content; ?></td>
    </tr>
    </table>
    
    <p><?php _e('Are you sure you want to do that?'); ?></p>
    
    <form action='comment.php' method='get'>
    
    <table width="100%">
    <tr>
    <td><a class="button" href="<?php echo admin_url('edit-comments.php'); ?>"><?php esc_attr_e('No'); ?></a></td>
    <td class="textright"><input type='submit' class="button" value='<?php echo esc_attr($button); ?>' /></td>
    </tr>
    </table>
    
    <?php wp_nonce_field( $nonce_action ); ?>
    <input type='hidden' name='action' value='<?php echo esc_attr($formaction); ?>' />
    <input type='hidden' name='p' value='<?php echo esc_attr($comment->comment_post_ID); ?>' />
    <input type='hidden' name='c' value='<?php echo esc_attr($comment->comment_ID); ?>' />
    <input type='hidden' name='noredir' value='1' />
    </form>
    
    </div>
    </div>
    <?php
    	break;
    
    case 'deletecomment' :
    case 'trashcomment' :
    case 'untrashcomment' :
    case 'spamcomment' :
    case 'unspamcomment' :
    	$comment_id = absint( $_REQUEST['c'] );
    	check_admin_referer( 'delete-comment_' . $comment_id );
    
    	$noredir = isset($_REQUEST['noredir']);
    
    	if ( !$comment = get_comment($comment_id) )
    		comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit-comments.php') );
    	if ( !current_user_can('edit_post', $comment->comment_post_ID ) )
    		comment_footer_die( __('You are not allowed to edit comments on this post.') );
    
    	if ( '' != wp_get_referer() && false == $noredir && false === strpos(wp_get_referer(), 'comment.php') )
    		$redir = wp_get_referer();
    	elseif ( '' != wp_get_original_referer() && false == $noredir )
    		$redir = wp_get_original_referer();
    	else
    		$redir = admin_url('edit-comments.php');
    
    	$redir = remove_query_arg( array('spammed', 'unspammed', 'trashed', 'untrashed', 'deleted', 'ids'), $redir );
    
    	switch ( $action ) {
    		case 'deletecomment' :
    			wp_delete_comment( $comment_id );
    			$redir = add_query_arg( array('deleted' => '1'), $redir );
    			break;
    		case 'trashcomment' :
    			wp_trash_comment($comment_id);
    			$redir = add_query_arg( array('trashed' => '1', 'ids' => $comment_id), $redir );
    			break;
    		case 'untrashcomment' :
    			wp_untrash_comment($comment_id);
    			$redir = add_query_arg( array('untrashed' => '1'), $redir );
    			break;
    		case 'spamcomment' :
    			wp_spam_comment($comment_id);
    			$redir = add_query_arg( array('spammed' => '1', 'ids' => $comment_id), $redir );
    			break;
    		case 'unspamcomment' :
    			wp_unspam_comment($comment_id);
    			$redir = add_query_arg( array('unspammed' => '1'), $redir );
    			break;
    	}
    
    	wp_redirect( $redir );
    
    	die;
    	break;
    
    case 'approvecomment'   :
    case 'unapprovecomment' :
    	$comment_id = absint( $_GET['c'] );
    	check_admin_referer( 'approve-comment_' . $comment_id );
    
    	$noredir = isset( $_GET['noredir'] );
    
    	if ( !$comment = get_comment( $comment_id ) )
    		comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit.php') );
    
    	if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) ) {
    		if ( 'approvecomment' == $action )
    			comment_footer_die( __('You are not allowed to edit comments on this post, so you cannot approve this comment.') );
    		else
    			comment_footer_die( __('You are not allowed to edit comments on this post, so you cannot disapprove this comment.') );
    	}
    
    	if ( '' != wp_get_referer() && false == $noredir )
    		$redir = remove_query_arg( array('approved', 'unapproved'), wp_get_referer() );
    	else
    		$redir = admin_url('edit-comments.php?p=' . absint( $comment->comment_post_ID ) );
    
    	if ( 'approvecomment' == $action ) {
    		wp_set_comment_status( $comment_id, 'approve' );
    		$redir = add_query_arg( array( 'approved' => 1 ), $redir );
    	} else {
    		wp_set_comment_status( $comment_id, 'hold' );
    		$redir = add_query_arg( array( 'unapproved' => 1 ), $redir );
    	}
    
    	wp_redirect( $redir );
    
    	exit();
    	break;
    
    case 'editedcomment' :
    
    	$comment_id = absint( $_POST['comment_ID'] );
    	$comment_post_id = absint( $_POST['comment_post_ID'] );
    
    	check_admin_referer( 'update-comment_' . $comment_id );
    
    	edit_comment();
    
    	$location = ( empty( $_POST['referredby'] ) ? "edit-comments.php?p=$comment_post_id" : $_POST['referredby'] ) . '#comment-' . $comment_id;
    	$location = apply_filters( 'comment_edit_redirect', $location, $comment_id );
    	wp_redirect( $location );
    
    	exit();
    	break;
    
    default:
    	wp_die( __('Unknown action.') );
    	break;
    
    } // end switch
    
    include('admin-footer.php');
    
    ?>

    I found the comment.php file under WP-Admin in the root folder.

    That is the wrong comments.php. The one you need is not in WP-Admin.

    Look for wp-content/themes/default/comments.php
    If you are not using the default theme, look in the theme folder other than “default”

    Got it. Was looking in the wrong place. Found it in my theme’s comments.php file. It was in there but a little lower down. Moved it up and it works fine.
    Thank you.

    Thanks Mike. Do not see that code in the new 2010 theme comment.php file though.

    WP 3.0 2010 theme does not need the <?php do_action ('comment_form', $post->ID);?> code in it because WP 3.0 has a new comments function separate from the comments.php template. SI CAPTCHA Anti-Spam version 2.5.2 or higher is fully WP 3.0 compliant.

    Be aware that using other themes (besides Twenty Ten) on WP 3.0 that are not fully WP 3.0 compliant can cause missing features.

    Thanks. Where is the new comment function in theme 2010 listed? I thought all goes in the comments.php file.

    since 3.0.0 there is function comment_form inside /wp-includes/comment-template.php

    Thank you Mike. So that automatically places the Captcha Box just above the “Submit” button?

    WP 3.0 with Twenty Ten theme or any WP 3.0 compatible theme will automatically have Captcha Box just above the comment box

    Has anyone had any luck rearranging the captcha image above the input field?

    Ok, i figured out how to put the captcha image above the input field. Hit me up for the si-captcha.php file if anyone is looking for this.

Viewing 15 replies - 1 through 15 (of 16 total)
  • The topic ‘[Plugin: SI CAPTCHA Anti-Spam] Where is the comment textarea?’ is closed to new replies.