WordPress.org

Make WordPress Core

Ticket #12507: pagination_base.5.diff

File pagination_base.5.diff, 7.7 KB (added by scribu, 4 years ago)

DRY for wp_link_pages()

  • wp-includes/post-template.php

     
    573573        $r = apply_filters( 'wp_link_pages_args', $r ); 
    574574        extract( $r, EXTR_SKIP ); 
    575575 
    576         global $post, $page, $numpages, $multipage, $more, $pagenow; 
     576        global $page, $numpages, $multipage, $more, $pagenow; 
    577577 
    578578        $output = ''; 
    579579        if ( $multipage ) { 
     
    583583                                $j = str_replace('%',$i,$pagelink); 
    584584                                $output .= ' '; 
    585585                                if ( ($i != $page) || ((!$more) && ($page==1)) ) { 
    586                                         if ( 1 == $i ) { 
    587                                                 $output .= '<a href="' . get_permalink() . '">'; 
    588                                         } else { 
    589                                                 if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) ) 
    590                                                         $output .= '<a href="' . add_query_arg('page', $i, get_permalink()) . '">'; 
    591                                                 elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID ) 
    592                                                         $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit('page/' . $i, 'single_paged'). '">'; 
    593                                                 else 
    594                                                         $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">'; 
    595                                         } 
    596  
     586                                        $output .= _wp_link_page($i); 
    597587                                } 
    598                                 $output .= $link_before; 
    599                                 $output .= $j; 
    600                                 $output .= $link_after; 
     588                                $output .= $link_before . $j . $link_after; 
    601589                                if ( ($i != $page) || ((!$more) && ($page==1)) ) 
    602590                                        $output .= '</a>'; 
    603591                        } 
     
    607595                                $output .= $before; 
    608596                                $i = $page - 1; 
    609597                                if ( $i && $more ) { 
    610                                         if ( 1 == $i ) { 
    611                                                 $output .= '<a href="' . get_permalink() . '">'; 
    612                                         } else { 
    613                                                 if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) ) 
    614                                                         $output .= '<a href="' . add_query_arg('page', $i, get_permalink()) . '">'; 
    615                                                 elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID ) 
    616                                                         $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit('page/' . $i, 'single_paged'). '">'; 
    617                                                 else 
    618                                                         $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">'; 
    619                                         } 
     598                                        $output .= _wp_link_page($i); 
    620599                                        $output .= $link_before. $previouspagelink . $link_after . '</a>'; 
    621600                                } 
    622601                                $i = $page + 1; 
    623602                                if ( $i <= $numpages && $more ) { 
    624                                         if ( 1 == $i ) { 
    625                                                 $output .= '<a href="' . get_permalink() . '">'; 
    626                                         } else { 
    627                                                 if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) ) 
    628                                                         $output .= '<a href="' . add_query_arg('page', $i, get_permalink()) . '">'; 
    629                                                 elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID ) 
    630                                                         $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit('page/' . $i, 'single_paged'). '">'; 
    631                                                 else 
    632                                                         $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">'; 
    633                                         } 
     603                                        $output .= _wp_link_page($i); 
    634604                                        $output .= $link_before. $nextpagelink . $link_after . '</a>'; 
    635605                                } 
    636606                                $output .= $after; 
     
    644614        return $output; 
    645615} 
    646616 
     617function _wp_link_page($i) { 
     618        global $post, $wp_rewrite; 
    647619 
     620        $r = ''; 
     621 
     622        if ( 1 == $i ) { 
     623                $r .= '<a href="' . get_permalink() . '">'; 
     624        } else { 
     625                if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) ) 
     626                        $r .= '<a href="' . add_query_arg('page', $i, get_permalink()) . '">'; 
     627                elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID ) 
     628                        $r .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit("$wp_rewrite->pagination_base/" . $i, 'single_paged'). '">'; 
     629                else 
     630                        $r .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">'; 
     631        } 
     632         
     633        return $r; 
     634} 
     635 
    648636// 
    649637// Post-meta: Custom per-post fields. 
    650638// 
  • wp-includes/post.php

     
    24172417                $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type IN ( '" . implode( "', '", esc_sql( $hierarchical_post_types ) ) . "' ) AND ID != %d AND post_parent = %d LIMIT 1"; 
    24182418                $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_ID, $post_parent ) ); 
    24192419 
    2420                 if ( $post_name_check || in_array( $slug, $feeds ) || preg_match( '@^(page)?\d+$@', $slug ) ) { 
     2420                if ( $post_name_check || in_array( $slug, $feeds ) || preg_match( "@^($wp_rewrite->pagination_base)?\d+$@", $slug ) ) { 
    24212421                        $suffix = 2; 
    24222422                        do { 
    24232423                                $alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; 
     
    45854585 
    45864586                add_filter('the_preview', '_set_preview'); 
    45874587        } 
    4588 } 
    4589  No newline at end of file 
     4588} 
  • wp-includes/link-template.php

     
    13871387                        $query_string = ''; 
    13881388                } 
    13891389 
    1390                 $request = preg_replace( '|page/\d+/?$|', '', $request); 
     1390                $request = preg_replace( "|$wp_rewrite->pagination_base/\d+/?$|", '', $request); 
    13911391                $request = preg_replace( '|^index\.php|', '', $request); 
    13921392                $request = ltrim($request, '/'); 
    13931393 
     
    13971397                        $base .= 'index.php/'; 
    13981398 
    13991399                if ( $pagenum > 1 ) { 
    1400                         $request = ( ( !empty( $request ) ) ? trailingslashit( $request ) : $request ) . user_trailingslashit( 'page/' . $pagenum, 'paged' ); 
     1400                        $request = ( ( !empty( $request ) ) ? trailingslashit( $request ) : $request ) . user_trailingslashit( $wp_rewrite->pagination_base . "/" . $pagenum, 'paged' ); 
    14011401                } 
    14021402 
    14031403                $result = $base . $request . $query_string; 
  • wp-includes/rewrite.php

     
    480480        var $comments_base = 'comments'; 
    481481 
    482482        /** 
     483         * Pagination permalink base. 
     484         * 
     485         * @since 3.1.0 
     486         * @access private 
     487         * @var string 
     488         */ 
     489        var $pagination_base = 'page'; 
     490 
     491        /** 
    483492         * Feed permalink base. 
    484493         * 
    485494         * @since 1.5.0 
     
    12791288 
    12801289                //build a regex to match the trackback and page/xx parts of URLs 
    12811290                $trackbackregex = 'trackback/?$'; 
    1282                 $pageregex = 'page/?([0-9]{1,})/?$'; 
     1291                $pageregex = $this->pagination_base . '/?([0-9]{1,})/?$'; 
    12831292                $commentregex = 'comment-page-([0-9]{1,})/?$'; 
    12841293 
    12851294                //build up an array of endpoint regexes to append => queries to append 
  • wp-includes/canonical.php

     
    178178                        $paged_redirect = @parse_url($redirect_url); 
    179179                        while ( preg_match( '#/page/?[0-9]+?(/+)?$#', $paged_redirect['path'] ) || preg_match( '#/(comments/?)?(feed|rss|rdf|atom|rss2)(/+)?$#', $paged_redirect['path'] ) || preg_match( '#/comment-page-[0-9]+(/+)?$#', $paged_redirect['path'] ) ) { 
    180180                                // Strip off paging and feed 
    181                                 $paged_redirect['path'] = preg_replace('#/page/?[0-9]+?(/+)?$#', '/', $paged_redirect['path']); // strip off any existing paging 
     181                                $paged_redirect['path'] = preg_replace("#/$wp_rewrite->pagination_base/?[0-9]+?(/+)?$#", '/', $paged_redirect['path']); // strip off any existing paging 
    182182                                $paged_redirect['path'] = preg_replace('#/(comments/?)?(feed|rss2?|rdf|atom)(/+|$)#', '/', $paged_redirect['path']); // strip off feed endings 
    183183                                $paged_redirect['path'] = preg_replace('#/comment-page-[0-9]+?(/+)?$#', '/', $paged_redirect['path']); // strip off any existing comment paging 
    184184                        }