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.

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 May 1 '11 at 1:23
  • If you pastebin the code, I'll take a look. Are you using 3.1? – tollmanz May 1 '11 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 May 1 '11 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 May 1 '11 at 6:01
  • Please take a look here wordpress.stackexchange.com/questions/16079/… – Mairy May 1 '11 at 6:23

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.