Great functionality, and as my prior mark – 5 stars for code.
Not often today you’ll find a plugin with clean and readable code.
Found and edited all the things I was need for my project in a couple of minutes.
Dev, I’ve got a problem in ur free-version.
elseif( $val['type'] == 'checkbox' ): $args['meta_query'] = array( 'key' => $data_value, 'value' => $_POST['data'][ $key ]['val'], 'type' => 'CHAR', 'compare' => 'IN' );
Now imagine you have meta_field “array of chars”
And your post #1 have it set like “fish, cat”
And your post #2 have it like “dog, duck”
You place a “checkbox” of that custom field with 4 values to check.
You check only “cat” and get post #1 in the results.
You check only “dog” and get post #2 in the results.
You check both “cat” and “dog”. What will you get? 0 found? Nah, you’ll get 2 posts found.
To allow WHERE IN of meta_query to EXACT match your array of checks you need to replace code above with:
elseif( $val['type'] == 'checkbox' ): foreach( $_POST['data'][ $key ]['val'] as $meta_val ): $args['meta_query'] = array( 'key' => $data_value, 'value' => $meta_val, 'type' => 'CHAR', 'compare' => '=' ); endforeach;
And here comes an option to set different ‘relation’ of meta_query, like OR or AND.
- This topic was modified 5 years, 6 months ago by aiframe.
thanks for the nice review. You are right, the meta search works only, when there is only one value stored in the meta value. In the end, a SQL-Statement is run.
What you could do: Instead of saving all values as CSV in one row like “fish,cat” you could store it in several rows, so you would have one mysql row for “cat” and one for “fish”.
- The topic ‘Nice one’ is closed to new replies.