WordPress.org

Make WordPress Core

Ticket #9383: 9383.2.diff

File 9383.2.diff, 4.5 KB (added by wonderboymusic, 19 months ago)
  • wp-includes/functions.php

    diff --git wp-includes/functions.php wp-includes/functions.php
    index 8200695..bb14b29 100644
    function wp_parse_id_list( $list ) { 
    25862586} 
    25872587 
    25882588/** 
     2589 * Clean up an array, comma- or space-separated list of slugs. 
     2590 * 
     2591 * @since 3.7.0 
     2592 * 
     2593 * @param array|string $list 
     2594 * @return array Sanitized array of slugs 
     2595 */ 
     2596function wp_parse_slug_list( $list ) { 
     2597        if ( ! is_array( $list ) ) 
     2598                $list = preg_split( '/[\s,]+/', $list ); 
     2599 
     2600        return array_unique( array_map( 'sanitize_title', $list ) ); 
     2601} 
     2602 
     2603/** 
    25892604 * Extract a slice of an array, given a list of keys. 
    25902605 * 
    25912606 * @since 3.1.0 
  • wp-includes/post.php

    diff --git wp-includes/post.php wp-includes/post.php
    index 03f31ef..55fa078 100644
    function get_page_uri($page) { 
    35763576 * @param mixed $args Optional. Array or string of options that overrides defaults. 
    35773577 * @return array List of pages matching defaults or $args 
    35783578 */ 
    3579 function get_pages($args = '') { 
     3579function get_pages( $args = '' ) { 
    35803580        global $wpdb; 
    35813581 
    35823582        $pages = false; 
    function get_pages($args = '') { 
    35853585                'child_of' => 0, 'sort_order' => 'ASC', 
    35863586                'sort_column' => 'post_title', 'hierarchical' => 1, 
    35873587                'exclude' => array(), 'include' => array(), 
     3588                'exclude_slugs' => array(), 'include_slugs' => array(), 
    35883589                'meta_key' => '', 'meta_value' => '', 
    35893590                'authors' => '', 'parent' => -1, 'exclude_tree' => '', 
    35903591                'number' => '', 'offset' => 0, 
    function get_pages($args = '') { 
    35983599 
    35993600        // Make sure the post type is hierarchical 
    36003601        $hierarchical_post_types = get_post_types( array( 'hierarchical' => true ) ); 
    3601         if ( !in_array( $post_type, $hierarchical_post_types ) ) 
     3602        if ( ! in_array( $post_type, $hierarchical_post_types ) ) 
    36023603                return $pages; 
    36033604 
    36043605        // Make sure we have a valid post status 
    3605         if ( !is_array( $post_status ) ) 
     3606        if ( ! is_array( $post_status ) ) 
    36063607                $post_status = explode( ',', $post_status ); 
    36073608        if ( array_diff( $post_status, get_post_stati() ) ) 
    36083609                return $pages; 
    function get_pages($args = '') { 
    36193620        if ( $cache = wp_cache_get( $cache_key, 'posts' ) ) { 
    36203621                // Convert to WP_Post instances 
    36213622                $pages = array_map( 'get_post', $cache ); 
    3622                 $pages = apply_filters('get_pages', $pages, $r); 
     3623                $pages = apply_filters( 'get_pages', $pages, $r ); 
    36233624                return $pages; 
    36243625        } 
    36253626 
    3626         if ( !is_array($cache) ) 
     3627        if ( ! is_array( $cache ) ) 
    36273628                $cache = array(); 
    36283629 
    36293630        $inclusions = ''; 
    3630         if ( !empty($include) ) { 
     3631        if ( ! empty( $include ) || ! empty( $include_slugs ) ) { 
    36313632                $child_of = 0; //ignore child_of, parent, exclude, meta_key, and meta_value params if using include 
    36323633                $parent = -1; 
    36333634                $exclude = ''; 
    36343635                $meta_key = ''; 
    36353636                $meta_value = ''; 
    36363637                $hierarchical = false; 
    3637                 $incpages = wp_parse_id_list( $include ); 
    3638                 if ( ! empty( $incpages ) ) { 
    3639                         foreach ( $incpages as $incpage ) { 
    3640                                 if (empty($inclusions)) 
    3641                                         $inclusions = $wpdb->prepare(' AND ( ID = %d ', $incpage); 
    3642                                 else 
    3643                                         $inclusions .= $wpdb->prepare(' OR ID = %d ', $incpage); 
    3644                         } 
     3638 
     3639                if ( ! empty( $include ) ) { 
     3640                        $incpages = wp_parse_id_list( $include ); 
     3641                        if ( ! empty( $incpages ) ) 
     3642                                $inclusions .= $wpdb->prepare( 'ID IN (' . rtrim( str_repeat( '%d,', count( $incpages ) ), ',' ) . ')', $incpages ); 
     3643                } 
     3644 
     3645                if ( ! empty( $include_slugs ) ) { 
     3646                        $incpages = wp_parse_slug_list( $include_slugs ); 
     3647                        if ( ! empty( $inclusions ) ) 
     3648                                $inclusions .= ' OR '; 
     3649 
     3650                        if ( ! empty( $incpages ) ) 
     3651                                $inclusions .= $wpdb->prepare( 'post_name IN (' . rtrim( str_repeat( '%s,', count( $incpages ) ), ',' ) . ')', $incpages ); 
    36453652                } 
    36463653        } 
    3647         if (!empty($inclusions)) 
    3648                 $inclusions .= ')'; 
     3654 
     3655        if ( ! empty( $inclusions ) ) 
     3656                $inclusions = ' AND ( '. $inclusions . ' )'; 
    36493657 
    36503658        $exclusions = ''; 
    3651         if ( !empty($exclude) ) { 
     3659        if ( ! empty( $exclude ) ) { 
    36523660                $expages = wp_parse_id_list( $exclude ); 
    3653                 if ( ! empty( $expages ) ) { 
    3654                         foreach ( $expages as $expage ) { 
    3655                                 if (empty($exclusions)) 
    3656                                         $exclusions = $wpdb->prepare(' AND ( ID <> %d ', $expage); 
    3657                                 else 
    3658                                         $exclusions .= $wpdb->prepare(' AND ID <> %d ', $expage); 
    3659                         } 
    3660                 } 
     3661                if ( ! empty( $expages ) ) 
     3662                        $exclusions .= $wpdb->prepare( ' AND ( ID NOT IN (' . rtrim( str_repeat( '%d,', count( $expages ) ), ',' ) . ') )', $expages ); 
     3663        } 
     3664 
     3665        if ( ! empty( $exclude_slugs ) ) { 
     3666                $expages = wp_parse_slug_list( $exclude_slugs ); 
     3667                if ( ! empty( $expages ) ) 
     3668                        $exclusions .= $wpdb->prepare( ' AND ( post_name NOT IN (' . rtrim( str_repeat( '%s,', count( $expages ) ), ',' ) . ') )', $expages ); 
    36613669        } 
    3662         if (!empty($exclusions)) 
    3663                 $exclusions .= ')'; 
    36643670 
    36653671        $author_query = ''; 
    36663672        if (!empty($authors)) {