Archived topic
How to show comment pagination
37 replies · Started by Benjamin on April 29, 2020
Okay, put the file back in the THEME folder. Works again. Just won't work from the child theme.
To clarify, do you have a comments.php file in both the Parent and the Child folder?
If you add a custom CSS in Appearance > Customize > Additional CSS while the Child theme is activated, does it work?
Perhaps you can create a staging site?
Kindly let us know. :)
Yes, I have a comments.php file in both the theme directory, and the child theme directory. In the theme directory I have the ORIGINAL file, and in the CHILD theme directory I have the edited file.
With this configuration I show the non-working changes made.
If I add the edited file to the THEME directory all is well, however the first time I update GP, it will overwrite the file and back to not working.
Added css to change look of comments box. It works.
Are you able to access comments.php in the theme file editor as such: https://share.getcloudapp.com/yAuKzl40
For instance, on my end, with my Child theme’s comments.php, adding an H1 in the file effectively displays it in the front end: https://share.getcloudapp.com/8LuDNrw7
Do you have a staging site where we can investigate further?
Kindly let us know. :)
Not sure where you are going with this. I use a PHP editor called PHP Designer. Been using it since 2006 when I started with WP. If the file is in the THEME directory it works perfectly. In the CHILD theme directory ONLY, it fails. I do not have a staging site.
Ssee below for code
<?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' );
?>
<div id="comments">
<?php
/**
* generate_inside_comments hook.
*
* @since 1.3.47
*/
do_action( 'generate_inside_comments' );
if ( have_comments() ) :
$comments_number = get_comments_number();
$comments_title = apply_filters(
'generate_comment_form_title',
sprintf(
esc_html(
/* translators: 1: number of comments, 2: post title */
_nx(
'%1$s comment on “%2$s”',
'%1$s comments on “%2$s”',
$comments_number,
'comments title',
'generatepress'
)
),
number_format_i18n( $comments_number ),
get_the_title()
)
);
// phpcs:ignore -- Title escaped in output.
echo apply_filters(
'generate_comments_title_output',
sprintf(
'<h3 class="comments-title">%s</h3>',
esc_html( $comments_title )
),
$comments_title,
$comments_number
);
/**
* generate_below_comments_title hook.
*
* @since 0.1
*/
do_action( 'generate_below_comments_title' ); ?>
<ol class="comment-list">
<?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',
)
);
?>
</ol><!-- .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>
<?php paginate_comments_links( array('prev_text' => '‹ Previous Comments', 'next_text' => 'Next page ›')); ?>
</nav><!-- #comment-nav-below -->
<?php
endif;
endif;
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
if ( ! comments_open() && '0' != get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) :
?>
<p class="no-comments"><?php esc_html_e( 'Comments are closed.', 'generatepress' ); ?></p>
<?php
endif;
comment_form();
?>
</div><!-- #comments -->
Overwriting a Parent theme file through a Child theme file is pretty straight forward.
In essence, it seems changes you make on the child theme’s comments.php isn’t showing in the front end.
Somehow, it isn’t overwriting the parent comments.php and usually, it’s naming convention which is where we started.
Now, even if the name is correct, it still isn’t working. Thus, checking from WordPress Admin dashboard if the file exists through Appearance > Theme File Editor will give us an idea if the file is being read/shown in the backend.
We basically need to figure out why the comments.php in your child theme’s folder isn’t the one being run.
To clarify, this issue shouldn’t be theme related but rather, a different issue may be causing this such as caching or server permissions. I’m not sure which.
You can also try #1 here to check if any plugin might be causing this(starting with caching, optimization and security plugins): https://docs.generatepress.com/article/debugging-tips/
Hope this clarifies. :)
Found the culprit.
Stars Rating - https://wordpress.org/plugins/stars-rating/
Notified the author.
For now I guess I will have to disable auto-updates on GP and remember to reinsert the comments.php file after doing an update. Not going to kill off all the ratings on my posts / pages.
Am looking to see if this also happens with Ocean and or Astra
Thanks for the help.
You’re welcome Mike! Glad you found the culprit! Feel free to reach out anytime you’ll need assistance with anything else. :)