WordPress.org

Make WordPress Core

Ticket #11950: 11950.diff

File 11950.diff, 2.8 KB (added by wonderboymusic, 6 years ago)
  • wp-includes/class-wp.php

    diff --git wp-includes/class-wp.php wp-includes/class-wp.php
    index dc77688..9c50796 100644
    class WP { 
    300300                                $this->query_vars[$var] = $this->extra_query_vars[$var];
    301301                }
    302302
     303                $this->query_vars['include_sticky'] = true;
     304
    303305                if ( isset($error) )
    304306                        $this->query_vars['error'] = $error;
    305307
  • wp-includes/query.php

    diff --git wp-includes/query.php wp-includes/query.php
    index 04286aa..c88e3ae 100644
    class WP_Query { 
    19601960                                $q['ignore_sticky_posts'] = $q['caller_get_posts'];
    19611961                }
    19621962
    1963                 if ( !isset( $q['ignore_sticky_posts'] ) )
    1964                         $q['ignore_sticky_posts'] = false;
     1963                if ( ! isset( $q['include_sticky'] ) )
     1964                        $q['include_sticky'] = false;
     1965
     1966                if ( ! isset( $q['ignore_sticky_posts'] ) )
     1967                        $q['ignore_sticky_posts'] = ! $q['include_sticky'];
    19651968
    19661969                if ( !isset($q['suppress_filters']) )
    19671970                        $q['suppress_filters'] = false;
    class WP_Query { 
    27452748                }
    27462749
    27472750                // Put sticky posts at the top of the posts array
    2748                 $sticky_posts = get_option('sticky_posts');
    2749                 if ( $this->is_home && $page <= 1 && is_array($sticky_posts) && !empty($sticky_posts) && !$q['ignore_sticky_posts'] ) {
    2750                         $num_posts = count($this->posts);
    2751                         $sticky_offset = 0;
    2752                         // Loop over posts and relocate stickies to the front.
    2753                         for ( $i = 0; $i < $num_posts; $i++ ) {
    2754                                 if ( in_array($this->posts[$i]->ID, $sticky_posts) ) {
    2755                                         $sticky_post = $this->posts[$i];
    2756                                         // Remove sticky from current position
    2757                                         array_splice($this->posts, $i, 1);
    2758                                         // Move to front, after other stickies
    2759                                         array_splice($this->posts, $sticky_offset, 0, array($sticky_post));
    2760                                         // Increment the sticky offset. The next sticky will be placed at this offset.
    2761                                         $sticky_offset++;
    2762                                         // Remove post from sticky posts array
    2763                                         $offset = array_search($sticky_post->ID, $sticky_posts);
    2764                                         unset( $sticky_posts[$offset] );
     2751                if ( $this->is_home && $page <= 1 && ! $q['ignore_sticky_posts'] && $q['include_sticky'] ) {
     2752                        $sticky_posts = get_option( 'sticky_posts' );
     2753                        if ( ! empty( $sticky_posts ) ) {
     2754                                $num_posts = count($this->posts);
     2755                                $sticky_offset = 0;
     2756                                // Loop over posts and relocate stickies to the front.
     2757                                for ( $i = 0; $i < $num_posts; $i++ ) {
     2758                                        if ( in_array($this->posts[$i]->ID, $sticky_posts) ) {
     2759                                                $sticky_post = $this->posts[$i];
     2760                                                // Remove sticky from current position
     2761                                                array_splice($this->posts, $i, 1);
     2762                                                // Move to front, after other stickies
     2763                                                array_splice($this->posts, $sticky_offset, 0, array($sticky_post));
     2764                                                // Increment the sticky offset. The next sticky will be placed at this offset.
     2765                                                $sticky_offset++;
     2766                                                // Remove post from sticky posts array
     2767                                                $offset = array_search($sticky_post->ID, $sticky_posts);
     2768                                                unset( $sticky_posts[$offset] );
     2769                                        }
    27652770                                }
    27662771                        }
    27672772