Site logo

Archived topic

comment form not being displayed for posts with no comments

5 replies · Started by dassana on March 28, 2019

Viewing posts 1–6 of 6

hi tom

i am using the following code in comment.php file. i just took the comment form code up to be displayed before the comments. now what has happened in posts where there is no comment, the comment form is not visible. in posts where there are comments, the comment form is visible. code pasted below

<?php
/**
* The template for displaying Comments.
*
* The area of the page that contains both current comments
* and the comment form. The actual display of comments is
* handled by a callback to generate_comment() which is
* located in the inc/template-tags.php file.
*
* @package GeneratePress
*/

if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}

/*
* If the current post is protected by a password and
* the visitor has not yet entered the password we will
* return early without loading the comments.
*/
if ( post_password_required() ) {
return;
}

/**
* generate_before_comments hook.
*
* @since 0.1
*/
do_action( 'generate_before_comments' );
?>

<?php
/**
* generate_inside_comments hook.
*
* @since 1.3.47
*/
do_action( 'generate_inside_comments' );

if ( have_comments() ) : ?>
<h3 class="comments-title">
<?php
$comments_number = get_comments_number();
if ( 1 === $comments_number ) {
printf(
/* translators: %s: post title */
esc_html_x( 'One thought on “%s”', 'comments title', 'generatepress' ),
'<span>' . get_the_title() . '</span>'
);
} else {
printf( // WPCS: XSS OK.
/* translators: 1: number of comments, 2: post title */
esc_html( _nx(
'%1$s comments/reviews',
'%1$s comments/reviews',
$comments_number,
'comments title',
'generatepress'
) ),
number_format_i18n( $comments_number ),
'<span>' . get_the_title() . '</span>'
);
}
?>
</h3>

<?php
/**
* generate_below_comments_title hook.
*
* @since 0.1
*/
do_action( 'generate_below_comments_title' );

$defaults = array(
'comment_field' => '<p class="comment-form-comment"><label for="comment" class="screen-reader-text">' . esc_html__( 'Comment', 'generatepress' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',
'comment_notes_before' => '<p class="comment-notes"><span id="email-notes">' . __( 'Your email address will not be published.' ) . '</span></p>',
'comment_notes_after' => null,
'id_form' => 'commentform',
'id_submit' => 'submit',
'title_reply' => apply_filters( 'generate_leave_comment', __( 'Leave a Comment', 'generatepress' ) ),
'label_submit' => apply_filters( 'generate_post_comment', __( 'Post Comment/Review', 'generatepress' ) ),
);
comment_form( $defaults );

if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : ?>
<nav id="comment-nav-above" class="comment-navigation" role="navigation">
<h2 class="screen-reader-text"><?php esc_html_e( 'Comment navigation', 'generatepress' ); ?></h2>

</nav><!-- #comment-nav-above -->
<?php endif; ?>

    <?php
    /*
    * Loop through and list the comments. Tell wp_list_comments()
    * to use generate_comment() to format the comments.
    * If you want to override this in a child theme, then you can
    * define generate_comment() and that will be used instead.
    * See generate_comment() in inc/template-tags.php for more.
    */
    wp_list_comments( array(
    'callback' => 'generate_comment',
    ) );
    ?>

<!-- .comment-list -->

<?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : ?>
<nav id="comment-nav-below" class="comment-navigation" role="navigation">
<h2 class="screen-reader-text"><?php esc_html_e( 'Comment navigation', 'generatepress' ); ?></h2>

</nav><!-- #comment-nav-below -->
<?php endif;

endif;

// If comments are closed and there are comments, let's leave a little note, shall we?
if ( ! comments_open() && '0' != get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) : ?>
<p class="no-comments"><?php _e( 'Comments are closed', 'generatepress' ); // WPCS: XSS OK. ?></p>
<?php endif; ?>

<!-- #comments -->

Hi there,

I'm not too sure what you mean. What did you change in that file exactly?

hi tom

i placed the following code after do_action( ‘generate_below_comments_title’ );

as it shows comment form after the content and on top of the comments)

_________________________________________________________

$defaults = array(
‘comment_field’ => ‘<p class=”comment-form-comment”><label for=”comment” class=”screen-reader-text”>’ . esc_html__( ‘Comment’, ‘generatepress’ ) . ‘</label><textarea id=”comment” name=”comment” cols=”45″ rows=”8″ aria-required=”true”></textarea></p>’,
‘comment_notes_before’ => ‘<p class=”comment-notes”><span id=”email-notes”>’ . __( ‘Your email address will not be published.’ ) . ‘</span></p>’,
‘comment_notes_after’ => null,
‘id_form’ => ‘commentform’,
‘id_submit’ => ‘submit’,
‘title_reply’ => apply_filters( ‘generate_leave_comment’, __( ‘Leave a Comment’, ‘generatepress’ ) ),
‘label_submit’ => apply_filters( ‘generate_post_comment’, __( ‘Post Comment/Review’, ‘generatepress’ ) ),
);
comment_form( $defaults );

____________________________________________________________________

that's it. this above code is actually placed towards the end in comments.php for do_action( ‘generate_below_comments_title’ );

as a result the comment form appears after the comments. i wanted the comments form to be above the comments.

thus after changing the placement of the code, the comment form on all single posts with 0 comments have disappeared. am i missing some tag or code here.

regards
dassana

thanks for the link tom. managed to add the codes and the error was gone.

Awesome :)

This archived topic is closed to new replies.