Thanks, but I’m developing a theme and would like to incorporate this feature as a standard.
Is this really that hard to program using a WP_Query or The Loop (in some way)?
If I click a category (ie, ?cat=3), how do I “get” that var? Is the only way to get it through $_GET? And after that, constructing a query that gives me all subcategories of that one, and for each of those, give me all posts.
Does anyone have any ideas about doing that?
Mike
The request is ?cat=2, and this code does the trick.
$cat_shown = array();
foreach ($category_cache as $cat_array) {
foreach ($cat_array as $the_category) {
$the_ID = $the_category->cat_ID;
if (in_array($the_ID, $cat_shown))
continue;
$cat_shown[] = $the_ID;
echo $the_category->cat_name;
echo "<br>\n";
}
}
And use $posts to get all posts from cat=2 and sub-categories.
Mike
This is exactly what I want to do. Could you explain how this is implemented? Thanks.
-Adam
You can also use the get_posts template tag to list the posts in a particular category. I found the implementation of this tag to be very easy. http://codex.wordpress.org/Template_Tags/get_posts
I would love to have that option – but I don’t get how I should include the code provided by slidese (Mike). Can somebody please help?!
For what it is worth, I was looking for a way to cycle through categories and list all posts on one page in WordPress MU. I tried Alex King’s Articles Plugin but couldn’t get it to display anything. I ended up combining the post and category queries in a page template. This was pretty simple and works for what I’ve needed so far– I also like that gives me flexibility in what is presented and how it is styled.
I started with the category query using parameters and styling to show empty categories, exclude Uncategorized, and show the category names styled as headers:
<?php
$categories= get_categories('hide_empty=0&exclude=1');
foreach ($categories as $cat) {
$catname = $cat->cat_name;
$catid = $cat->cat_ID;
echo '<h2>'.$catname.'</h2>';
?>
Then I started the post query calling $catid into the parameters and ordering posts alphabetically:
<?php
$posts = query_posts($query_string . 'cat='.$catid.'&orderby=title&order=asc&posts_per_page=-1');
global $more;
// set $more to 0 in order to only get the first part of the post
$more = 0;
// the Loop starts here
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
After that I formatted the_title and the_content to suit my needs and followed up with
<?php endwhile; else:
_e('There are no posts in this category yet.');
endif;
} //end category query
?>
Not sure that is the best way to do something like this, but I’m adding it here for what it is worth.