WordPress.org

Make WordPress Core

Ticket #8683: 8683.patch

File 8683.patch, 1.6 KB (added by hakre, 9 years ago)
  • wp-includes/post.php

    ### Eclipse Workspace Patch 1.0
    #P wordress 2.7
     
    21132113
    21142114        $exclusions = '';
    21152115        if ( !empty($exclude) ) {
    2116                 $expages = preg_split('/[\s,]+/',$exclude);
     2116                $expages = array_map('intval', explode(',', $exclude));         
    21172117                if ( count($expages) ) {
    21182118                        foreach ( $expages as $expage ) {
    21192119                                if (empty($exclusions))
     
    21222122                                        $exclusions .= $wpdb->prepare(' AND ID <> %d ', $expage);
    21232123                        }
    21242124                }
     2125                if (!empty($exclusions))
     2126                        $exclusions .= ')';             
    21252127        }
    2126         if (!empty($exclusions))
    2127                 $exclusions .= ')';
    21282128
    21292129        $author_query = '';
    21302130        if (!empty($authors)) {
     
    21882188                $pages = & get_page_children($child_of, $pages);
    21892189
    21902190        if ( !empty($exclude_tree) ) {
    2191                 $exclude = array();
    2192 
    2193                 $exclude = (int) $exclude_tree;
    2194                 $children = get_page_children($exclude, $pages);
    2195                 $excludes = array();
    2196                 foreach ( $children as $child )
    2197                         $excludes[] = $child->ID;
    2198                 $excludes[] = $exclude;
     2191                $excludes = array_map('intval', explode(',', $exclude_tree));
     2192               
     2193                // exclude tree will work as describben - self and direct childs only (!)               
    21992194                $total = count($pages);
    22002195                for ( $i = 0; $i < $total; $i++ ) {
    2201                         if ( in_array($pages[$i]->ID, $excludes) )
     2196                        if ( in_array($pages[$i]->ID, $excludes) ||
     2197                             in_array($pages[$i]->post_parent, $excludes))                           
    22022198                                unset($pages[$i]);
    22032199                }
    22042200        }
    2205 
     2201               
    22062202        $cache[ $key ] = $pages;
    22072203        wp_cache_set( 'get_pages', $cache, 'posts' );
    22082204