| 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 | } |