WordPress.org

Make WordPress Core

Ticket #18748: 18748.diff

File 18748.diff, 2.9 KB (added by scribu, 3 years ago)
  • wp-includes/query.php

    diff --git wp-includes/query.php wp-includes/query.php
    index f47a860a..e04682d 100644
    class WP_Query { 
    16991699                } 
    17001700 
    17011701                foreach ( $GLOBALS['wp_taxonomies'] as $taxonomy => $t ) { 
    1702                         if ( 'post_tag' == $taxonomy ) 
    1703                                 continue;       // Handled further down in the $q['tag'] block 
    1704  
    1705                         if ( $t->query_var && !empty( $q[$t->query_var] ) ) { 
     1702                        if ( $t->query_var_id && !empty( $q[$t->query_var_id] ) ) { 
     1703                                $q[$t->query_var_id] = absint( $q[$t->query_var_id] ); 
     1704                                $tax_query[] = array( 
     1705                                        'taxonomy' => $taxonomy, 
     1706                                        'terms' => $q[$t->query_var_id] 
     1707                                ); 
     1708                        } 
     1709                        elseif ( 'post_tag' != $taxonomy && $t->query_var && !empty( $q[$t->query_var] ) ) { 
    17061710                                $tax_query_defaults = array( 
    17071711                                        'taxonomy' => $taxonomy, 
    17081712                                        'field' => 'slug', 
    class WP_Query { 
    18031807                        } 
    18041808                } 
    18051809 
    1806                 if ( !empty($q['tag_id']) ) { 
    1807                         $q['tag_id'] = absint( $q['tag_id'] ); 
    1808                         $tax_query[] = array( 
    1809                                 'taxonomy' => 'post_tag', 
    1810                                 'terms' => $q['tag_id'] 
    1811                         ); 
    1812                 } 
    1813  
    18141810                if ( !empty($q['tag__in']) ) { 
    18151811                        $q['tag__in'] = array_map('absint', array_unique( (array) $q['tag__in'] ) ); 
    18161812                        $tax_query[] = array( 
  • wp-includes/taxonomy.php

    diff --git wp-includes/taxonomy.php wp-includes/taxonomy.php
    index e231a6c..fc0ad9b 100644
    function create_initial_taxonomies() { 
    3434                'hierarchical' => false, 
    3535                'update_count_callback' => '_update_post_term_count', 
    3636                'query_var' => 'tag', 
     37                'query_var_id' => 'tag_id', 
    3738                'rewrite' => did_action( 'init' ) ? array( 
    3839                                        'slug' => get_option('tag_base') ? get_option('tag_base') : 'tag', 
    3940                                        'with_front' => ( get_option('tag_base') && ! $wp_rewrite->using_index_permalinks() ) ? false : true ) : false, 
    function is_taxonomy_hierarchical($taxonomy) { 
    266267 * query_var - false to prevent queries, or string to customize query var 
    267268 * (?$query_var=$term); default will use $taxonomy as query var. 
    268269 * 
     270 * query_var_id - string used to query terms by id, instead of by slug. 
     271 * 
    269272 * public - If the taxonomy should be publicly queryable; //@TODO not implemented. 
    270273 * defaults to true. 
    271274 * 
    function register_taxonomy( $taxonomy, $object_type, $args = array() ) { 
    301304                                                'update_count_callback' => '', 
    302305                                                'rewrite' => true, 
    303306                                                'query_var' => $taxonomy, 
     307                                                'query_var_id' => false, 
    304308                                                'public' => true, 
    305309                                                'show_ui' => null, 
    306310                                                'show_tagcloud' => null, 
    function register_taxonomy( $taxonomy, $object_type, $args = array() ) { 
    318322                $wp->add_query_var($args['query_var']); 
    319323        } 
    320324 
     325        if ( false !== $args['query_var_id'] && !empty($wp) ) { 
     326                $args['query_var_id'] = sanitize_title_with_dashes($args['query_var_id']); 
     327                $wp->add_query_var($args['query_var_id']); 
     328        } 
     329 
    321330        if ( false !== $args['rewrite'] && '' != get_option('permalink_structure') ) { 
    322331                $args['rewrite'] = wp_parse_args($args['rewrite'], array( 
    323332                        'slug' => sanitize_title_with_dashes($taxonomy),