Make WordPress Core


Ignore:
Timestamp:
03/07/2014 06:32:40 PM (11 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.