Make WordPress Core


Ignore:
Timestamp:
03/07/2014 06:32:40 PM (12 years ago)
Author:
wonderboymusic
Message:

When setting posts_per_page in WP_Query::get_posts(), check for is_feed() in the same place where posts_per_page is set when it is not already set. Previously, when is_feed() was true, posts_per_page would be arbitrarily overwritten. This fix allows posts_per_page to be set during pre_get_posts when is_feed() is true and not be overwritten.

Adds unit test.

Props wokamoto.
Fixes #25380.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/query.php

    r27395 r27455  
    22492249                }
    22502250                $post_type = $q['post_type'];
    2251                 if ( !isset($q['posts_per_page']) || $q['posts_per_page'] == 0 )
    2252                         $q['posts_per_page'] = get_option('posts_per_page');
     2251                if ( ! isset( $q['posts_per_page'] ) || $q['posts_per_page'] == 0 ) {
     2252                        if ( $this->is_feed ) {
     2253                                $q['posts_per_page'] = get_option( 'posts_per_rss' );
     2254                        } else {
     2255                                $q['posts_per_page'] = get_option( 'posts_per_page' );
     2256                        }
     2257                }
    22532258                if ( isset($q['showposts']) && $q['showposts'] ) {
    22542259                        $q['showposts'] = (int) $q['showposts'];
     
    22652270                }
    22662271                if ( $this->is_feed ) {
    2267                         $q['posts_per_page'] = get_option('posts_per_rss');
    22682272                        $q['nopaging'] = false;
    22692273                }
Note: See TracChangeset for help on using the changeset viewer.