Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I am trying to show a list of posts that are related to category X and tag Y. I've tried the following code:

$args = array(
    'posts_per_page' => 4,
    'tag_id' => $tag_id,
    'cat' => $cat_id,
);
query_posts($args);

but it doesn't work correctly and returns all the posts in the co\ategory.

Would love to hear any insight you might have

share|improve this question
    
I think with query_posts() you can only make use of category or tag. I'm not sure, but maybe the use of the function is limited to that which would mean that this is correctly working but it doesn't do what you want to do it. –  hakre Nov 17 '10 at 23:40
add comment

4 Answers

up vote 4 down vote accepted

Edit: See below for proper way to query category and tag intersections.

global $wp_query;
        $args = array(
        'category__and' => 'category', 
        'tag__in' => 'post_tag', //must use tag id for this field
        'posts_per_page' => -1); //get all posts

$posts = get_posts($args);
        foreach ($posts as $post) :
  //do stuff 
     endforeach;
share|improve this answer
add comment

I think this is bug in WordPress that has been commented on elsewhere, try using the name of the tag rather than the ID then it should work:

$args = array(
    'posts_per_page' => 3,
    'tag' => 'review',
    'cat' => 9,
);
query_posts($args);

Let us know how you get on, not sure what happens with tags with multiple words in the name.

share|improve this answer
add comment

I believe it will work if you remove the offending comma at the end of the array...

   $args = array(
        'posts_per_page' => 4,
        'tag_id' => $tag_id,
        'cat' => $cat_id
    );
    query_posts($args);
share|improve this answer
1  
nope, it just returns all the posts in the category. –  hannit cohen Nov 17 '10 at 22:55
1  
The comma is not a problem, infact it helps when you duplicate lines to enter additional data. The comma can be written or not, it changes nothing. –  hakre Nov 17 '10 at 23:23
1  
Indeed, whilst "odd" to say the least, it is apparently valid to leave that trailing comma in... Ref: php.net/manual/en/function.array.php (i've just learnt that, ^_^)... –  t31os Nov 18 '10 at 23:42
    
The last comma is actually recommended to be there, if you want to adhere to the WordPress Coding Standard –  windyjonas Nov 12 '13 at 11:20
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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