If I were to take a standard query post.

<?php query_posts('post_type=payment'); while (have_posts()) : the_post();?>

Only this time I would like to query the post by 2 custom fields that it may contain.

<?php query_posts('post_type=payment'.get_post_meta($post->ID,'bookingref', true).get_post_meta($post->ID,'customerref', true) ); while (have_posts()) : the_post(); ?>

That doesn't work. Is something like this possible and how is it done?

Any ideas?



To query posts by custom fields you can use the 'meta_query' parameter

$args = array(
'post_type' => 'payment',
'meta_query' => array(
            'key' => 'bookingref',
            'value' => 'the_value_you_want',
            'compare' => 'LIKE'
            'key' => 'customerref',
            'value' => 'the_value_you_want',
            'compare' => 'LIKE'
query_posts($args); while (have_posts()) : the_post(); ?>

you can't use get_post_meta inside the query because it gets you the value and not the key and also it accepts a Post ID to get that value of and before the query $post->id is not in the scope.

  • yup, this is better than my (deleted) answer - meta_query is the way to go for multiple custom key querying
    – anu
    Mar 3 '11 at 17:51
  • Marvellous well done. You are missing a bracket though. You need .. )); query_posts($args) .. Mar 3 '11 at 18:01
  • There's a big opportunity here to educate, using WP_Query, and the performance costs of meta queries
    – Tom J Nowell
    Jan 17 '17 at 19:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.