[wp-trac] [WordPress Trac] #20319: $page value not being defaulted to 1 in the absence of cpage query var in get_next_comments_link()/get_previous_comments_link()

WordPress Trac wp-trac at lists.automattic.com
Thu Mar 29 09:23:20 UTC 2012


#20319: $page value not being defaulted to 1 in the absence of cpage query var in
get_next_comments_link()/get_previous_comments_link()
--------------------------+-----------------------------
 Reporter:  MomDad        |      Owner:
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  Comments      |    Version:  3.4
 Severity:  normal        |   Keywords:
--------------------------+-----------------------------
 get_next_comments_link() generates incorrect comment pagination links on
 the first page when used alongside a user-made call to wp_list_comments().

 Currently, get_next_comments_link() doesn't take into account instances
 where there is no 'cpage' query var (which is the case when a user-made
 call to wp_list_comments() is performed). The intval() of the empty $page
 variable returns 0, and at this point should then be defaulted to 1 in
 order for the correct link to page 2 to be generated. Instead, it's left
 as 0, and the resulting link is self-referencing to page 1.

 In wp-includes/link-template.php:

 {{{
 function get_next_comments_link( $label = '', $max_page = 0 ) {
     global $wp_query;

     if ( !is_singular() || !get_option('page_comments') )
         return;

     $page = get_query_var('cpage'); //RETURNS EMPTY IN ABSENCE OF A cpage
 VALUE ON PAGE 1 OF A USER-MADE CALL TO wp_list_comments()

     $nextpage = intval($page) + 1; //intval() RETURNS 0, 0+1=1, RESULTING
 IN THE "Newer Comments" LINK SELF-REFERENCING PAGE 1, INSTEAD OF POINTING
 TO PAGE 2

     ...
 }}}

 Coincidentally, in paginate_comments_links() (wp-includes/link-
 template.php) this situation is handled correctly, and $page does get
 correctly defaulted to 1. The same conditional used in
 paginate_comments_links() can be applied to both get_next_comments_link()
 and get_previous_comments_link(). The code to properly account for it is:

 {{{
 function get_next_comments_link( $label = '', $max_page = 0 ) {
     global $wp_query;

     if ( !is_singular() || !get_option('page_comments') )
         return;

     $page = get_query_var('cpage');
     if ( !$page ) //******** ADDED
         $page = 1; //******** ADDED

     $nextpage = intval($page) + 1; //intval() RETURNS 0, 0+1=1, RESULTING
 IN THE "Newer Comments" LINK NOT POINTING TO PAGE 2

     ...
 }}}

 The same addition should be made to get_previous_comments_link() as well,
 although it's obviously unnoticeable on the first page.

-- 
Ticket URL: <http://core.trac.wordpress.org/ticket/20319>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list