0

This is my query, it shows the posts that have meta_key as extra1 and meta_value as test

<?php $customkey1 = 'extra1'; ?>
<?php $customvalue1 = 'test'; ?>
<?php query_posts('meta_key=' . $customkey1 . '&meta_value=' . $customvalue1);  ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<?php the_title(); ?>

<?php endwhile; ?>
<?php endif; ?>

My question is how can I still show the posts that have extra1 as metakey and test as metavalue but also the posts that have extra2 as metakey and test2 as metavalue in the same query. A combination of two or more variables.

1 Answer 1

2

If you are using WP 3.1, I would recommend using the meta_query parameter with the WP_Query class.

$args = array(
    'meta_query' => array(
        array(
            'key' => $customkey1,
            'value' => $customvalue1,
            'compare' => '='
        ),
        array(
            'key' => $customkey2,
            'value' => $customvalue2,
            'compare' => '='
        )
    )
 );
$query = new WP_Query( $args );

if ( $query->have_posts() ) : 
    while ( $query->have_posts() ) : $query->the_post();
        the_title();
    endwhile;
endif;

The meta_query parameter allows for very powerful queries with metadata.

Sources:

http://codex.wordpress.org/Function_Reference/WP_Query#Custom_Field_Parameters

5
  • Hi there thanks but it seems that it doesn't working. It continuesly showing me all posts of the blog.
    – Mairy
    Commented May 1, 2011 at 1:23
  • If you pastebin the code, I'll take a look. Are you using 3.1?
    – tollmanz
    Commented May 1, 2011 at 1:51
  • My bad. Is working! Thank you! Is there a compact-simpler way to handle 10 arrays instead of having it copy-paste 10 times for different variables?
    – Mairy
    Commented May 1, 2011 at 2:01
  • @Mairy: if your custom keys need to be checked against the same value using the same compare setting, you could create a loop for DRY code.
    – Geert
    Commented May 1, 2011 at 6:01
  • Please take a look here wordpress.stackexchange.com/questions/16079/…
    – Mairy
    Commented May 1, 2011 at 6:23

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.