WordPress.org

Make WordPress Core

Ticket #18778: transform_query_filters.diff

File transform_query_filters.diff, 1.3 KB (added by tott, 7 years ago)
  • wp-includes/taxonomy.php

     
    761761                        case 'slug':
    762762                        case 'name':
    763763                                $terms = "'" . implode( "','", array_map( 'sanitize_title_for_query', $query['terms'] ) ) . "'";
    764                                 $terms = $wpdb->get_col( "
     764                                $sql_query = "
    765765                                        SELECT $wpdb->term_taxonomy.$resulting_field
    766766                                        FROM $wpdb->term_taxonomy
    767767                                        INNER JOIN $wpdb->terms USING (term_id)
    768768                                        WHERE taxonomy = '{$query['taxonomy']}'
    769769                                        AND $wpdb->terms.{$query['field']} IN ($terms)
    770                                 " );
     770                                ";
     771                                $terms = apply_filters( 'transform_query_' . $query['field'], false, $sql_query );
     772                                if ( false === $terms )
     773                                        $terms = $wpdb->get_col( $sql_query );
    771774                                break;
    772775
    773776                        default:
    774777                                $terms = implode( ',', array_map( 'intval', $query['terms'] ) );
    775                                 $terms = $wpdb->get_col( "
     778                                $sql_query = "
    776779                                        SELECT $resulting_field
    777780                                        FROM $wpdb->term_taxonomy
    778781                                        WHERE taxonomy = '{$query['taxonomy']}'
    779782                                        AND term_id IN ($terms)
    780                                 " );
     783                                ";
     784                                $terms = apply_filters( 'transform_query_default', false, $sql_query );
     785                                if ( false === $terms )
     786                                        $terms = $wpdb->get_col( $sql_query );
    781787                }
    782788
    783789                if ( 'AND' == $query['operator'] && count( $terms ) < count( $query['terms'] ) ) {