WordPress.org

Make WordPress Core

Ticket #30831: 30831.diff

File 30831.diff, 2.1 KB (added by obenland, 6 years ago)
  • src/wp-includes/general-template.php

     
    25892589        $total        = ( isset( $wp_query->max_num_pages ) ) ? $wp_query->max_num_pages : 1;
    25902590        $current      = ( get_query_var( 'paged' ) ) ? intval( get_query_var( 'paged' ) ) : 1;
    25912591        $pagenum_link = html_entity_decode( get_pagenum_link() );
    2592         $query_args   = array();
    25932592        $url_parts    = explode( '?', $pagenum_link );
    25942593
    2595         if ( isset( $url_parts[1] ) ) {
    2596                 wp_parse_str( $url_parts[1], $query_args );
    2597                 $query_args = urlencode_deep( $query_args );
    2598         }
     2594        $pagenum_link = trailingslashit( $url_parts[0] ) . '%_%';
    25992595
    2600         $pagenum_link = remove_query_arg( array_keys( $query_args ), $pagenum_link );
    2601         $pagenum_link = trailingslashit( $pagenum_link ) . '%_%';
    2602 
    26032596        $format  = $wp_rewrite->using_index_permalinks() && ! strpos( $pagenum_link, 'index.php' ) ? 'index.php/' : '';
    26042597        $format .= $wp_rewrite->using_permalinks() ? user_trailingslashit( $wp_rewrite->pagination_base . '/%#%', 'paged' ) : '?paged=%#%';
    26052598
     
    26152608                'end_size' => 1,
    26162609                'mid_size' => 2,
    26172610                'type' => 'plain',
    2618                 'add_args' => $query_args, // array of query args to add
     2611                'add_args' => array(), // array of query args to add
    26192612                'add_fragment' => '',
    26202613                'before_page_number' => '',
    26212614                'after_page_number' => ''
     
    26232616
    26242617        $args = wp_parse_args( $args, $defaults );
    26252618
     2619        // Filter query arguments only if there are any.
     2620        if ( isset( $url_parts[1] ) ) {
     2621                // Find the format argument.
     2622                $format_query = parse_url( str_replace( '%_%', $args['format'], $args['base'] ), PHP_URL_QUERY );
     2623                wp_parse_str( $format_query, $format_arg );
     2624
     2625                // Remove the format argument from the array of query arguments.
     2626                wp_parse_str( remove_query_arg( array_keys( $format_arg ), $url_parts[1] ), $query_args );
     2627                $args['add_args'] = array_merge( $args['add_args'], urlencode_deep( $query_args ) );
     2628        }
     2629
    26262630        // Who knows what else people pass in $args
    26272631        $total = (int) $args['total'];
    26282632        if ( $total < 2 ) {