Make WordPress Core

Ticket #14825: 14825.diff

File 14825.diff, 1.1 KB (added by garyc40, 14 years ago)

honor $where and $join of the main query when querying for sticky posts

  • wp-includes/query.php

    diff --git wp-includes/query.php wp-includes/query.php
    index 0f394f0..fc1f135 100644
    class WP_Query { 
    26622662                        // Fetch sticky posts that weren't in the query results
    26632663                        if ( !empty($sticky_posts) ) {
    26642664                                $stickies__in = implode(',', array_map( 'absint', $sticky_posts ));
    2665                                 // honor post type(s) if not set to any
    2666                                 $stickies_where = '';
    2667                                 if ( 'any' != $post_type && '' != $post_type ) {
    2668                                         if ( is_array( $post_type ) ) {
    2669                                                 $post_types = join( "', '", $post_type );
    2670                                         } else {
    2671                                                 $post_types = $post_type;
    2672                                         }
    2673                                         $stickies_where = "AND $wpdb->posts.post_type IN ('" . $post_types . "')";
    2674                                 }
    26752665
    2676                                 $stickies = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE $wpdb->posts.ID IN ($stickies__in) $stickies_where" );
     2666                                $stickies = $wpdb->get_results( "SELECT * FROM $wpdb->posts $join WHERE $wpdb->posts.ID IN ($stickies__in) $where" );
     2667
    26772668                                foreach ( $stickies as $sticky_post ) {
    26782669                                        // Ignore sticky posts the current user cannot read or are not published.
    26792670                                        if ( 'publish' != $sticky_post->post_status )