WordPress.org

Make WordPress Core

Ticket #23373: meta.php.patch

File meta.php.patch, 1.3 KB (added by mpwalsh8, 9 years ago)

Patch for meta.php to support this functionality

  • meta.php

     
    672672                $meta_query = array();
    673673
    674674                // Simple query needs to be first for orderby=meta_value to work correctly
    675                 foreach ( array( 'key', 'compare', 'type' ) as $key ) {
     675                foreach ( array( 'key', 'compare', 'type', 'like_escape' ) as $key ) {
    676676                        if ( !empty( $qv[ "meta_$key" ] ) )
    677677                                $meta_query[0][ $key ] = $qv[ "meta_$key" ];
    678678                }
     
    737737                foreach ( $queries as $k => $q ) {
    738738                        $meta_key = isset( $q['key'] ) ? trim( $q['key'] ) : '';
    739739                        $meta_type = isset( $q['type'] ) ? strtoupper( $q['type'] ) : 'CHAR';
     740                        $meta_like_escape = isset( $q['like_escape'] ) ? trim( $q['like_escape'] ) : false;
    740741
    741742                        if ( 'NUMERIC' == $meta_type )
    742743                                $meta_type = 'SIGNED';
     
    803804                        } elseif ( 'BETWEEN' == substr( $meta_compare, -7) ) {
    804805                                $meta_value = array_slice( $meta_value, 0, 2 );
    805806                                $meta_compare_string = '%s AND %s';
     807                        } elseif ( 'LIKE' == substr( $meta_compare, -4 ) && $meta_like_escape ) {
     808                                $meta_compare_string = '%s';
    806809                        } elseif ( 'LIKE' == substr( $meta_compare, -4 ) ) {
    807810                                $meta_value = '%' . like_escape( $meta_value ) . '%';
    808811                                $meta_compare_string = '%s';