| | 832 | } elseif ( in_array( $meta_compare, array( 'LIKE', 'NOT LIKE' ) ) && is_array( $meta_value ) ) { |
| | 833 | $mk = array_keys( $meta_value ); |
| | 834 | if ( 1 !== count( $mk ) || ! in_array( strtoupper( $mk[0] ), array( 'AND', 'OR' ) ) || ! is_array( $meta_value[ $mk[0] ] ) || empty( $meta_value[ $mk[0] ] ) ) { |
| | 835 | _doing_it_wrong( __METHOD__, sprintf( __( 'Meta queries having the %1$s or %2$s compare operators accept array values with this format: %3$s; possible operator values: %4$s.' ), |
| | 836 | '<code>LIKE</code>', '<code>NOT LIKE</code>', "<code>array( 'operator' => array( 'value 1', 'value 2', ... ) )</code>", "'<code>AND</code>', '<code>OR</code>'" ), '3.9' ); |
| | 837 | unset( $join[$i] ); |
| | 838 | continue; |
| | 839 | } |
| | 840 | |
| | 841 | $like_compare_relation = strtoupper( $mk[0] ); |
| | 842 | $like_compare_values = $meta_value[ $mk[0] ]; |
| 842 | | $meta_value = '%' . like_escape( $meta_value ) . '%'; |
| 843 | | $meta_compare_string = '%s'; |
| | 853 | if ( ! isset( $like_compare_values ) ) { |
| | 854 | $meta_value = '%' . like_escape( $meta_value ) . '%'; |
| | 855 | $meta_compare_string = '%s'; |
| | 856 | } else { |
| | 857 | $where_term = ''; |
| | 858 | foreach ( $like_compare_values as $like_value ) { |
| | 859 | $like_value = '%' . like_escape( trim( $like_value ) ) . '%'; |
| | 860 | $term = $wpdb->prepare( "CAST($alias.meta_value AS {$meta_type}) {$meta_compare} %s", $like_value ); |
| | 861 | if ( ! empty( $where_term ) ) { |
| | 862 | $where_term .= " {$like_compare_relation} "; |
| | 863 | } |
| | 864 | $where_term .= $term; |
| | 865 | } |
| | 866 | $where_term = '(' . $where_term . ')'; |
| | 867 | } |