9

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?

Marvellous

0

1 Answer 1

19

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

<?php
$args = array(
    'post_type' => 'payment',
    'meta_query' => array(
            array(
                'key' => 'bookingref',
                'value' => 'the_value_you_want',
                'compare' => 'LIKE'
            ),
            array(
                '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.

3
  • yup, this is better than my (deleted) answer - meta_query is the way to go for multiple custom key querying
    – anu
    Mar 3, 2011 at 17:51
  • Marvellous well done. You are missing a bracket though. You need .. )); query_posts($args) .. Mar 3, 2011 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, 2017 at 19:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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