Changeset 42343 for trunk/src/wp-includes/class-wp-term-query.php
- Timestamp:
- 11/30/2017 11:09:33 PM (8 years ago)
- File:
-
- 1 edited
-
trunk/src/wp-includes/class-wp-term-query.php (modified) (23 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/class-wp-term-query.php
r42209 r42343 255 255 256 256 if ( 'all' == $query['get'] ) { 257 $query['childless'] = false;258 $query['child_of'] = 0;259 $query['hide_empty'] = 0;257 $query['childless'] = false; 258 $query['child_of'] = 0; 259 $query['hide_empty'] = 0; 260 260 $query['hierarchical'] = false; 261 $query['pad_counts'] = false;261 $query['pad_counts'] = false; 262 262 } 263 263 … … 331 331 if ( ! $has_hierarchical_tax ) { 332 332 $args['hierarchical'] = false; 333 $args['pad_counts'] = false;333 $args['pad_counts'] = false; 334 334 } 335 335 … … 340 340 341 341 if ( 'all' == $args['get'] ) { 342 $args['childless'] = false;343 $args['child_of'] = 0;344 $args['hide_empty'] = 0;342 $args['childless'] = false; 343 $args['child_of'] = 0; 344 $args['hide_empty'] = 0; 345 345 $args['hierarchical'] = false; 346 $args['pad_counts'] = false;346 $args['pad_counts'] = false; 347 347 } 348 348 … … 412 412 $inclusions = ''; 413 413 if ( ! empty( $include ) ) { 414 $exclude = '';414 $exclude = ''; 415 415 $exclude_tree = ''; 416 $inclusions = implode( ',', wp_parse_id_list( $include ) );416 $inclusions = implode( ',', wp_parse_id_list( $include ) ); 417 417 } 418 418 … … 423 423 $exclusions = array(); 424 424 if ( ! empty( $exclude_tree ) ) { 425 $exclude_tree = wp_parse_id_list( $exclude_tree );425 $exclude_tree = wp_parse_id_list( $exclude_tree ); 426 426 $excluded_children = $exclude_tree; 427 427 foreach ( $exclude_tree as $extrunk ) { 428 428 $excluded_children = array_merge( 429 429 $excluded_children, 430 (array) get_terms( reset( $taxonomies ), array( 431 'child_of' => intval( $extrunk ), 432 'fields' => 'ids', 433 'hide_empty' => 0 434 ) ) 430 (array) get_terms( 431 reset( $taxonomies ), array( 432 'child_of' => intval( $extrunk ), 433 'fields' => 'ids', 434 'hide_empty' => 0, 435 ) 436 ) 435 437 ); 436 438 } … … 447 449 foreach ( $taxonomies as $_tax ) { 448 450 $term_hierarchy = _get_term_hierarchy( $_tax ); 449 $exclusions = array_merge( array_keys( $term_hierarchy ), $exclusions );451 $exclusions = array_merge( array_keys( $term_hierarchy ), $exclusions ); 450 452 } 451 453 } … … 491 493 ) { 492 494 if ( is_array( $args['slug'] ) ) { 493 $slug = array_map( 'sanitize_title', $args['slug'] );495 $slug = array_map( 'sanitize_title', $args['slug'] ); 494 496 $this->sql_clauses['where']['slug'] = "t.slug IN ('" . implode( "', '", $slug ) . "')"; 495 497 } else { 496 $slug = sanitize_title( $args['slug'] );498 $slug = sanitize_title( $args['slug'] ); 497 499 $this->sql_clauses['where']['slug'] = "t.slug = '$slug'"; 498 500 } … … 504 506 $this->sql_clauses['where']['term_taxonomy_id'] = "tt.term_taxonomy_id IN ({$tt_ids})"; 505 507 } else { 506 $this->sql_clauses['where']['term_taxonomy_id'] = $wpdb->prepare( "tt.term_taxonomy_id = %d", $args['term_taxonomy_id'] );508 $this->sql_clauses['where']['term_taxonomy_id'] = $wpdb->prepare( 'tt.term_taxonomy_id = %d', $args['term_taxonomy_id'] ); 507 509 } 508 510 } 509 511 510 512 if ( ! empty( $args['name__like'] ) ) { 511 $this->sql_clauses['where']['name__like'] = $wpdb->prepare( "t.name LIKE %s", '%' . $wpdb->esc_like( $args['name__like'] ) . '%' );513 $this->sql_clauses['where']['name__like'] = $wpdb->prepare( 't.name LIKE %s', '%' . $wpdb->esc_like( $args['name__like'] ) . '%' ); 512 514 } 513 515 514 516 if ( ! empty( $args['description__like'] ) ) { 515 $this->sql_clauses['where']['description__like'] = $wpdb->prepare( "tt.description LIKE %s", '%' . $wpdb->esc_like( $args['description__like'] ) . '%' );517 $this->sql_clauses['where']['description__like'] = $wpdb->prepare( 'tt.description LIKE %s', '%' . $wpdb->esc_like( $args['description__like'] ) . '%' ); 516 518 } 517 519 … … 522 524 } 523 525 524 $object_ids = implode( ', ', array_map( 'intval', $object_ids ) );526 $object_ids = implode( ', ', array_map( 'intval', $object_ids ) ); 525 527 $this->sql_clauses['where']['object_ids'] = "tr.object_id IN ($object_ids)"; 526 528 } … … 535 537 536 538 if ( '' !== $parent ) { 537 $parent = (int) $parent;539 $parent = (int) $parent; 538 540 $this->sql_clauses['where']['parent'] = "tt.parent = '$parent'"; 539 541 } … … 543 545 $hierarchical = false; 544 546 } 545 if ( $args['hide_empty'] && ! $hierarchical ) {547 if ( $args['hide_empty'] && ! $hierarchical ) { 546 548 $this->sql_clauses['where']['count'] = 'tt.count > 0'; 547 549 } … … 561 563 } 562 564 563 564 565 if ( ! empty( $args['search'] ) ) { 565 566 $this->sql_clauses['where']['search'] = $this->get_search_sql( $args['search'] ); … … 567 568 568 569 // Meta query support. 569 $join = '';570 $join = ''; 570 571 $distinct = ''; 571 572 572 573 // Reparse meta_query query_vars, in case they were modified in a 'pre_get_terms' callback. 573 574 $this->meta_query->parse_query_vars( $this->query_vars ); 574 $mq_sql = $this->meta_query->get_sql( 'term', 't', 'term_id' );575 $mq_sql = $this->meta_query->get_sql( 'term', 't', 'term_id' ); 575 576 $meta_clauses = $this->meta_query->get_clauses(); 576 577 577 578 if ( ! empty( $meta_clauses ) ) { 578 $join .= $mq_sql['join'];579 $join .= $mq_sql['join']; 579 580 $this->sql_clauses['where']['meta_query'] = preg_replace( '/^\s*AND\s*/', '', $mq_sql['where'] ); 580 $distinct .= "DISTINCT";581 $distinct .= 'DISTINCT'; 581 582 582 583 } … … 585 586 switch ( $args['fields'] ) { 586 587 case 'all': 587 case 'all_with_object_id' :588 case 'tt_ids' :589 case 'slugs' :588 case 'all_with_object_id': 589 case 'tt_ids': 590 case 'slugs': 590 591 $selects = array( 't.*', 'tt.*' ); 591 592 if ( 'all_with_object_id' === $args['fields'] && ! empty( $args['object_ids'] ) ) { … … 602 603 case 'count': 603 604 $orderby = ''; 604 $order = '';605 $order = ''; 605 606 $selects = array( 'COUNT(*)' ); 606 607 break; … … 652 653 $clauses = apply_filters( 'terms_clauses', compact( 'fields', 'join', 'where', 'distinct', 'orderby', 'order', 'limits' ), $taxonomies, $args ); 653 654 654 $fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields'] : '';655 $join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join'] : '';656 $where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where'] : '';657 $distinct = isset( $clauses[ 'distinct' ] ) ? $clauses[ 'distinct'] : '';658 $orderby = isset( $clauses[ 'orderby' ] ) ? $clauses[ 'orderby'] : '';659 $order = isset( $clauses[ 'order' ] ) ? $clauses[ 'order'] : '';660 $limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits'] : '';655 $fields = isset( $clauses['fields'] ) ? $clauses['fields'] : ''; 656 $join = isset( $clauses['join'] ) ? $clauses['join'] : ''; 657 $where = isset( $clauses['where'] ) ? $clauses['where'] : ''; 658 $distinct = isset( $clauses['distinct'] ) ? $clauses['distinct'] : ''; 659 $orderby = isset( $clauses['orderby'] ) ? $clauses['orderby'] : ''; 660 $order = isset( $clauses['order'] ) ? $clauses['order'] : ''; 661 $limits = isset( $clauses['limits'] ) ? $clauses['limits'] : ''; 661 662 662 663 if ( $where ) { … … 672 673 673 674 // $args can be anything. Only use the args defined in defaults to compute the key. 674 $key = md5( serialize( wp_array_slice_assoc( $args, array_keys( $this->query_var_defaults ) ) ) . serialize( $taxonomies ) . $this->request );675 $key = md5( serialize( wp_array_slice_assoc( $args, array_keys( $this->query_var_defaults ) ) ) . serialize( $taxonomies ) . $this->request ); 675 676 $last_changed = wp_cache_get_last_changed( 'terms' ); 676 $cache_key = "get_terms:$key:$last_changed";677 $cache = wp_cache_get( $cache_key, 'terms' );677 $cache_key = "get_terms:$key:$last_changed"; 678 $cache = wp_cache_get( $cache_key, 'terms' ); 678 679 if ( false !== $cache ) { 679 680 if ( 'all' === $_fields ) { … … 757 758 758 759 $_tt_ids[ $term->term_id ] = 1; 759 $_terms[] = $term;760 $_terms[] = $term; 760 761 } 761 762 … … 828 829 */ 829 830 protected function parse_orderby( $orderby_raw ) { 830 $_orderby = strtolower( $orderby_raw );831 $_orderby = strtolower( $orderby_raw ); 831 832 $maybe_orderby_meta = false; 832 833 … … 841 842 $orderby = "FIELD( t.term_id, $include )"; 842 843 } elseif ( 'slug__in' == $_orderby && ! empty( $this->query_vars['slug'] ) && is_array( $this->query_vars['slug'] ) ) { 843 $slugs = implode( "', '", array_map( 'sanitize_title_for_query', $this->query_vars['slug'] ) );844 $slugs = implode( "', '", array_map( 'sanitize_title_for_query', $this->query_vars['slug'] ) ); 844 845 $orderby = "FIELD( t.slug, '" . $slugs . "')"; 845 846 } elseif ( 'none' == $_orderby ) { … … 894 895 } 895 896 896 $allowed_keys = array();897 $primary_meta_key = null;897 $allowed_keys = array(); 898 $primary_meta_key = null; 898 899 $primary_meta_query = reset( $meta_clauses ); 899 900 if ( ! empty( $primary_meta_query['key'] ) ) { 900 901 $primary_meta_key = $primary_meta_query['key']; 901 $allowed_keys[] = $primary_meta_key;902 $allowed_keys[] = $primary_meta_key; 902 903 } 903 904 $allowed_keys[] = 'meta_value'; … … 909 910 } 910 911 911 switch ( $orderby_raw ) {912 switch ( $orderby_raw ) { 912 913 case $primary_meta_key: 913 914 case 'meta_value': … … 927 928 // $orderby corresponds to a meta_query clause. 928 929 $meta_clause = $meta_clauses[ $orderby_raw ]; 929 $orderby = "CAST({$meta_clause['alias']}.meta_value AS {$meta_clause['cast']})";930 $orderby = "CAST({$meta_clause['alias']}.meta_value AS {$meta_clause['cast']})"; 930 931 } 931 932 break;
Note: See TracChangeset
for help on using the changeset viewer.