WordPress.org

Make WordPress Core

Ticket #15242: 15242.3.diff

File 15242.3.diff, 13.5 KB (added by wpmuguru, 3 years ago)

lines 1-900 of 15242.diff

  • wp-includes/taxonomy.php

     
    2121                'query_var' => 'category_name', 
    2222                'rewrite' => array( 
    2323                                        'hierarchical' => true, 
    24                                         'slug' => get_option('category_base') ? get_option('category_base') : 'category', 
    25                                         'with_front' => false), 
     24                                        'slug' => get_option( 'category_base' ) ? get_option( 'category_base' ) : 'category', 
     25                                        'with_front' => false 
     26                ), 
    2627                'public' => true, 
    2728                'show_ui' => true, 
    2829                '_builtin' => true, 
     
    3334                'update_count_callback' => '_update_post_term_count', 
    3435                'query_var' => 'tag', 
    3536                'rewrite' => array( 
    36                                         'slug' => get_option('tag_base') ? get_option('tag_base') : 'tag' , 
    37                                         'with_front' => false), 
     37                                        'slug' => get_option( 'tag_base' ) ? get_option( 'tag_base' ) : 'tag', 
     38                                        'with_front' => false 
     39                ), 
    3840                'public' => true, 
    3941                'show_ui' => true, 
    4042                '_builtin' => true, 
     
    5254                'show_ui' => false, 
    5355                '_builtin' => true, 
    5456                'show_in_nav_menus' => false, 
    55         ) ) ; 
     57        ) ); 
    5658 
    5759        register_taxonomy( 'link_category', 'link', array( 
    5860                'hierarchical' => false, 
     
    7577                'public' => false, 
    7678                'show_ui' => false, 
    7779                '_builtin' => true, 
    78         ) ) ; 
     80        ) ); 
    7981 
    80         register_taxonomy( 'post_format', array('post', 'page', 'attachment'), array( 
     82        register_taxonomy( 'post_format', array( 'post', 'page', 'attachment' ), array( 
    8183                'public' => false, 
    8284                'hierarchical' => false, 
    8385                'labels' => array( 
     
    8991                'show_ui' => false, 
    9092                '_builtin' => true, 
    9193                'show_in_nav_menus' => false, 
    92         ) ) ; 
     94        ) ); 
    9395} 
    9496add_action( 'init', 'create_initial_taxonomies', 0 ); // highest priority 
    9597 
     
    111113function get_taxonomies( $args = array(), $output = 'names', $operator = 'and' ) { 
    112114        global $wp_taxonomies; 
    113115 
    114         $field = ('names' == $output) ? 'name' : false; 
     116        $field = ( 'names' == $output ) ? 'name' : false; 
    115117 
    116         return wp_filter_object_list($wp_taxonomies, $args, $operator, $field); 
     118        return wp_filter_object_list( $wp_taxonomies, $args, $operator, $field ); 
    117119} 
    118120 
    119121 
     
    136138 * @param string $output The type of output to return, either taxonomy 'names' or 'objects'. 'names' is the default. 
    137139 * @return array The names of all taxonomy of $object_type. 
    138140 */ 
    139 function get_object_taxonomies($object, $output = 'names') { 
     141function get_object_taxonomies( $object, $output = 'names' ) { 
    140142        global $wp_taxonomies; 
    141143 
    142         if ( is_object($object) ) { 
     144        if ( is_object( $object ) ) { 
    143145                if ( $object->post_type == 'attachment' ) 
    144                         return get_attachment_taxonomies($object); 
     146                        return get_attachment_taxonomies( $object ); 
    145147                $object = $object->post_type; 
    146148        } 
    147149 
     
    149151 
    150152        $taxonomies = array(); 
    151153        foreach ( (array) $wp_taxonomies as $tax_name => $tax_obj ) { 
    152                 if ( array_intersect($object, (array) $tax_obj->object_type) ) { 
     154                if ( array_intersect( $object, (array) $tax_obj->object_type ) ) { 
    153155                        if ( 'names' == $output ) 
    154156                                $taxonomies[] = $tax_name; 
    155157                        else 
     
    223225 * @param string $taxonomy Name of taxonomy object 
    224226 * @return bool Whether the taxonomy is hierarchical 
    225227 */ 
    226 function is_taxonomy_hierarchical($taxonomy) { 
    227         if ( ! taxonomy_exists($taxonomy) ) 
     228function is_taxonomy_hierarchical( $taxonomy ) { 
     229        if ( ! taxonomy_exists( $taxonomy ) ) 
    228230                return false; 
    229231 
    230         $taxonomy = get_taxonomy($taxonomy); 
     232        $taxonomy = get_taxonomy( $taxonomy ); 
    231233        return $taxonomy->hierarchical; 
    232234} 
    233235 
     
    286288function register_taxonomy( $taxonomy, $object_type, $args = array() ) { 
    287289        global $wp_taxonomies, $wp_rewrite, $wp; 
    288290 
    289         if ( ! is_array($wp_taxonomies) ) 
     291        if ( ! is_array( $wp_taxonomies ) ) 
    290292                $wp_taxonomies = array(); 
    291293 
    292294        $defaults = array(      'hierarchical' => false, 
     
    301303                                                'capabilities' => array(), 
    302304                                                'show_in_nav_menus' => null, 
    303305                                        ); 
    304         $args = wp_parse_args($args, $defaults); 
     306        $args = wp_parse_args( $args, $defaults ); 
    305307 
    306         if ( false !== $args['query_var'] && !empty($wp) ) { 
     308        if ( false !== $args['query_var'] && !empty( $wp ) ) { 
    307309                if ( true === $args['query_var'] ) 
    308310                        $args['query_var'] = $taxonomy; 
    309                 $args['query_var'] = sanitize_title_with_dashes($args['query_var']); 
    310                 $wp->add_query_var($args['query_var']); 
     311                $args['query_var'] = sanitize_title_with_dashes( $args['query_var'] ); 
     312                $wp->add_query_var( $args['query_var'] ); 
    311313        } 
    312314 
    313         if ( false !== $args['rewrite'] && '' != get_option('permalink_structure') && !empty($wp_rewrite) ) { 
    314                 $args['rewrite'] = wp_parse_args($args['rewrite'], array( 
    315                         'slug' => sanitize_title_with_dashes($taxonomy), 
     315        if ( false !== $args['rewrite'] && '' != get_option( 'permalink_structure' ) && !empty( $wp_rewrite ) ) { 
     316                $args['rewrite'] = wp_parse_args( $args['rewrite'], array( 
     317                        'slug' => sanitize_title_with_dashes( $taxonomy ), 
    316318                        'with_front' => true, 
    317319                        'hierarchical' => false 
    318                 )); 
     320                ) ); 
    319321 
    320322                if ( $args['hierarchical'] && $args['rewrite']['hierarchical'] ) 
    321323                        $tag = '(.+?)'; 
    322324                else 
    323325                        $tag = '([^/]+)'; 
    324326 
    325                 $wp_rewrite->add_rewrite_tag("%$taxonomy%", $tag, $args['query_var'] ? "{$args['query_var']}=" : "taxonomy=$taxonomy&term="); 
    326                 $wp_rewrite->add_permastruct($taxonomy, "{$args['rewrite']['slug']}/%$taxonomy%", $args['rewrite']['with_front']); 
     327                $wp_rewrite->add_rewrite_tag( "%$taxonomy%", $tag, $args['query_var'] ? "{$args['query_var']}=" : "taxonomy=$taxonomy&term=" ); 
     328                $wp_rewrite->add_permastruct( $taxonomy, "{$args['rewrite']['slug']}/%$taxonomy%", $args['rewrite']['with_front'] ); 
    327329        } 
    328330 
    329         if ( is_null($args['show_ui']) ) 
     331        if ( is_null( $args['show_ui'] ) ) 
    330332                $args['show_ui'] = $args['public']; 
    331333 
    332334        // Whether to show this type in nav-menus.php. Defaults to the setting for public. 
    333335        if ( null === $args['show_in_nav_menus'] ) 
    334336                $args['show_in_nav_menus'] = $args['public']; 
    335337 
    336         if ( is_null($args['show_tagcloud']) ) 
     338        if ( is_null( $args['show_tagcloud'] ) ) 
    337339                $args['show_tagcloud'] = $args['show_ui']; 
    338340 
    339341        $default_caps = array( 
     
    354356        $wp_taxonomies[$taxonomy] = (object) $args; 
    355357 
    356358        // register callback handling for metabox 
    357         add_filter('wp_ajax_add-' . $taxonomy, '_wp_ajax_add_hierarchical_term'); 
     359        add_filter( 'wp_ajax_add-' . $taxonomy, '_wp_ajax_add_hierarchical_term' ); 
    358360} 
    359361 
    360362/** 
     
    419421 * @param array|string $object_type Name of the object type 
    420422 * @return bool True if successful, false if not 
    421423 */ 
    422 function register_taxonomy_for_object_type( $taxonomy, $object_type) { 
     424function register_taxonomy_for_object_type( $taxonomy, $object_type ) { 
    423425        global $wp_taxonomies; 
    424426 
    425         if ( !isset($wp_taxonomies[$taxonomy]) ) 
     427        if ( !isset( $wp_taxonomies[$taxonomy] ) ) 
    426428                return false; 
    427429 
    428         if ( ! get_post_type_object($object_type) ) 
     430        if ( ! get_post_type_object( $object_type ) ) 
    429431                return false; 
    430432 
    431433        $wp_taxonomies[$taxonomy]->object_type[] = $object_type; 
     
    536538                        foreach ( $terms as $i => $term ) { 
    537539                                $terms[$i] = sanitize_title_for_query( $term ); 
    538540                        } 
    539                         $terms = array_filter($terms); 
     541                        $terms = array_filter( $terms ); 
    540542 
    541543                        $terms = "'" . implode( "','", $terms ) . "'"; 
    542544                        $sql = " 
     
    593595 * @return mixed|null|WP_Error Term Row from database. Will return null if $term is empty. If taxonomy does not 
    594596 * exist then WP_Error will be returned. 
    595597 */ 
    596 function &get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw') { 
     598function &get_term( $term, $taxonomy, $output = OBJECT, $filter = 'raw' ) { 
    597599        global $wpdb; 
    598600        $null = null; 
    599601 
    600         if ( empty($term) ) { 
    601                 $error = new WP_Error('invalid_term', __('Empty Term')); 
     602        if ( empty( $term ) ) { 
     603                $error = new WP_Error( 'invalid_term', __( 'Empty Term' ) ); 
    602604                return $error; 
    603605        } 
    604606 
    605         if ( ! taxonomy_exists($taxonomy) ) { 
    606                 $error = new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); 
     607        if ( ! taxonomy_exists( $taxonomy ) ) { 
     608                $error = new WP_Error( 'invalid_taxonomy', __( 'Invalid Taxonomy' ) ); 
    607609                return $error; 
    608610        } 
    609611 
    610         if ( is_object($term) && empty($term->filter) ) { 
    611                 wp_cache_add($term->term_id, $term, $taxonomy); 
     612        if ( is_object( $term ) && empty( $term->filter ) ) { 
     613                wp_cache_add( $term->term_id, $term, $taxonomy ); 
    612614                $_term = $term; 
    613615        } else { 
    614                 if ( is_object($term) ) 
     616                if ( is_object( $term ) ) 
    615617                        $term = $term->term_id; 
    616618                $term = (int) $term; 
    617                 if ( ! $_term = wp_cache_get($term, $taxonomy) ) { 
    618                         $_term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND t.term_id = %s LIMIT 1", $taxonomy, $term) ); 
     619                if ( ! $_term = wp_cache_get( $term, $taxonomy ) ) { 
     620                        $_term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND t.term_id = %s LIMIT 1", $taxonomy, $term ) ); 
    619621                        if ( ! $_term ) 
    620622                                return $null; 
    621                         wp_cache_add($term, $_term, $taxonomy); 
     623                        wp_cache_add( $term, $_term, $taxonomy ); 
    622624                } 
    623625        } 
    624626 
    625         $_term = apply_filters('get_term', $_term, $taxonomy); 
    626         $_term = apply_filters("get_$taxonomy", $_term, $taxonomy); 
    627         $_term = sanitize_term($_term, $taxonomy, $filter); 
     627        $_term = apply_filters( 'get_term', $_term, $taxonomy ); 
     628        $_term = apply_filters( "get_$taxonomy", $_term, $taxonomy ); 
     629        $_term = sanitize_term( $_term, $taxonomy, $filter ); 
    628630 
    629631        if ( $output == OBJECT ) { 
    630632                return $_term; 
    631633        } elseif ( $output == ARRAY_A ) { 
    632                 $__term = get_object_vars($_term); 
     634                $__term = get_object_vars( $_term ); 
    633635                return $__term; 
    634636        } elseif ( $output == ARRAY_N ) { 
    635                 $__term = array_values(get_object_vars($_term)); 
     637                $__term = array_values( get_object_vars( $_term ) ); 
    636638                return $__term; 
    637639        } else { 
    638640                return $_term; 
     
    666668 * @param string $filter Optional, default is raw or no WordPress defined filter will applied. 
    667669 * @return mixed Term Row from database. Will return false if $taxonomy does not exist or $term was not found. 
    668670 */ 
    669 function get_term_by($field, $value, $taxonomy, $output = OBJECT, $filter = 'raw') { 
     671function get_term_by( $field, $value, $taxonomy, $output = OBJECT, $filter = 'raw' ) { 
    670672        global $wpdb; 
    671673 
    672         if ( ! taxonomy_exists($taxonomy) ) 
     674        if ( ! taxonomy_exists( $taxonomy ) ) 
    673675                return false; 
    674676 
    675677        if ( 'slug' == $field ) { 
    676678                $field = 't.slug'; 
    677                 $value = sanitize_title($value); 
    678                 if ( empty($value) ) 
     679                $value = sanitize_title( $value ); 
     680                if ( empty( $value ) ) 
    679681                        return false; 
    680682        } else if ( 'name' == $field ) { 
    681683                // Assume already escaped 
    682                 $value = stripslashes($value); 
     684                $value = stripslashes( $value ); 
    683685                $field = 't.name'; 
    684686        } else { 
    685                 return get_term( (int) $value, $taxonomy, $output, $filter); 
     687                return get_term( (int) $value, $taxonomy, $output, $filter ); 
    686688        } 
    687689 
    688         $term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND $field = %s LIMIT 1", $taxonomy, $value) ); 
     690        $term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND $field = %s LIMIT 1", $taxonomy, $value ) ); 
    689691        if ( !$term ) 
    690692                return false; 
    691693 
    692         wp_cache_add($term->term_id, $term, $taxonomy); 
     694        wp_cache_add( $term->term_id, $term, $taxonomy ); 
    693695 
    694         $term = apply_filters('get_term', $term, $taxonomy); 
    695         $term = apply_filters("get_$taxonomy", $term, $taxonomy); 
    696         $term = sanitize_term($term, $taxonomy, $filter); 
     696        $term = apply_filters( 'get_term', $term, $taxonomy ); 
     697        $term = apply_filters( "get_$taxonomy", $term, $taxonomy ); 
     698        $term = sanitize_term( $term, $taxonomy, $filter ); 
    697699 
    698700        if ( $output == OBJECT ) { 
    699701                return $term; 
    700702        } elseif ( $output == ARRAY_A ) { 
    701                 return get_object_vars($term); 
     703                return get_object_vars( $term ); 
    702704        } elseif ( $output == ARRAY_N ) { 
    703                 return array_values(get_object_vars($term)); 
     705                return array_values( get_object_vars( $term ) ); 
    704706        } else { 
    705707                return $term; 
    706708        } 
     
    727729 * @return array|WP_Error List of Term Objects. WP_Error returned if $taxonomy does not exist 
    728730 */ 
    729731function get_term_children( $term_id, $taxonomy ) { 
    730         if ( ! taxonomy_exists($taxonomy) ) 
    731                 return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); 
     732        if ( ! taxonomy_exists( $taxonomy ) ) 
     733                return new WP_Error( 'invalid_taxonomy', __( 'Invalid Taxonomy' ) ); 
    732734 
    733735        $term_id = intval( $term_id ); 
    734736 
    735         $terms = _get_term_hierarchy($taxonomy); 
     737        $terms = _get_term_hierarchy( $taxonomy ); 
    736738 
    737         if ( ! isset($terms[$term_id]) ) 
     739        if ( ! isset( $terms[$term_id] ) ) 
    738740                return array(); 
    739741 
    740742        $children = $terms[$term_id]; 
    741743 
    742744        foreach ( (array) $terms[$term_id] as $child ) { 
    743                 if ( isset($terms[$child]) ) 
    744                         $children = array_merge($children, get_term_children($child, $taxonomy)); 
     745                if ( isset( $terms[$child] ) ) 
     746                        $children = array_merge( $children, get_term_children( $child, $taxonomy ) ); 
    745747        } 
    746748 
    747749        return $children; 
     
    769771function get_term_field( $field, $term, $taxonomy, $context = 'display' ) { 
    770772        $term = (int) $term; 
    771773        $term = get_term( $term, $taxonomy ); 
    772         if ( is_wp_error($term) ) 
     774        if ( is_wp_error( $term ) ) 
    773775                return $term; 
    774776 
    775         if ( !is_object($term) ) 
     777        if ( !is_object( $term ) ) 
    776778                return ''; 
    777779 
    778         if ( !isset($term->$field) ) 
     780        if ( !isset( $term->$field ) ) 
    779781                return ''; 
    780782 
    781         return sanitize_term_field($field, $term->$field, $term->term_id, $taxonomy, $context); 
     783        return sanitize_term_field( $field, $term->$field, $term->term_id, $taxonomy, $context ); 
    782784} 
    783785 
    784786/** 
     
    800802function get_term_to_edit( $id, $taxonomy ) { 
    801803        $term = get_term( $id, $taxonomy ); 
    802804 
    803         if ( is_wp_error($term) ) 
     805        if ( is_wp_error( $term ) ) 
    804806                return $term; 
    805807 
    806         if ( !is_object($term) ) 
     808        if ( !is_object( $term ) ) 
    807809                return ''; 
    808810 
    809         return sanitize_term($term, $taxonomy, 'edit'); 
     811        return sanitize_term( $term, $taxonomy, 'edit' ); 
    810812} 
    811813 
    812814/**