WordPress.org

Make WordPress Core

Ticket #9383: 9383.diff

File 9383.diff, 2.1 KB (added by wojtek.szkutnik, 4 years ago)
  • wp-includes/functions.php

     
    29772977} 
    29782978 
    29792979/** 
     2980 * Clean up an array, comma- or space-separated list of slugs 
     2981 * 
     2982 * 
     2983 * @param array|string $list 
     2984 * @return array Sanitized array of slugs 
     2985 */ 
     2986function wp_parse_slug_list( $list ) { 
     2987        if ( !is_array($list) ) 
     2988                $list = preg_split('/[\s,]+/', $list); 
     2989 
     2990        return array_unique(array_map('sanitize_title', $list)); 
     2991} 
     2992 
     2993/** 
    29802994 * Filters a list of objects, based on a set of key => value arguments 
    29812995 * 
    29822996 * @since 3.0.0 
  • wp-includes/post.php

     
    30593059        $defaults = array( 
    30603060                'child_of' => 0, 'sort_order' => 'ASC', 
    30613061                'sort_column' => 'post_title', 'hierarchical' => 1, 
    3062                 'exclude' => array(), 'include' => array(), 
     3062                'exclude' => array(), 'exclude_slugs' => array(), 'include' => array(), 
    30633063                'meta_key' => '', 'meta_value' => '', 
    30643064                'authors' => '', 'parent' => -1, 'exclude_tree' => '', 
    30653065                'number' => '', 'offset' => 0, 
     
    31153115 
    31163116        $exclusions = ''; 
    31173117        if ( !empty($exclude) ) { 
    3118                 $expages = wp_parse_id_list( $exclude ); 
    3119                 if ( ! empty( $expages ) ) { 
    3120                         foreach ( $expages as $expage ) { 
     3118                $expages_by_id = wp_parse_id_list( $exclude ); 
     3119                if ( ! empty( $expages_by_id ) ) { 
     3120                        foreach ( $expages_by_id as $expage ) { 
    31213121                                if (empty($exclusions)) 
    31223122                                        $exclusions = $wpdb->prepare(' AND ( ID <> %d ', $expage); 
    31233123                                else 
    31243124                                        $exclusions .= $wpdb->prepare(' AND ID <> %d ', $expage); 
    31253125                        } 
    31263126                } 
     3127                 
     3128                $expages_by_slug = wp_parse_slug_list( $exclude_slugs ); 
     3129                if ( ! empty( $expages_by_slug ) ) { 
     3130                        foreach ( $expages_by_slug as $expage ) { 
     3131                                if (empty($exclusions)) 
     3132                                        $exclusions = $wpdb->prepare(' AND ( post_name <> %s ', $expage); 
     3133                                else 
     3134                                        $exclusions .= $wpdb->prepare(' AND post_name <> %s ', $expage); 
     3135                        } 
     3136                } 
    31273137        } 
    31283138        if (!empty($exclusions)) 
    31293139                $exclusions .= ')';