My current theme has a portfolio section where you can have an array items based on what category they are in. My problem is that I have several pages that I want to be in the portfolio section but can’t add them there because you can’t assign categories to individual pages only posts. Is there any method or plugin around this issue?
This is some code that I believe calls the category in my portfolio.php:
<?php if(is_category() && in_category($current_id) || post_is_in_descendant_category($current_id)){?>
<h1><?php single_cat_title(); ?></h1>
<ul class="portfolioCategs">
<li><a href="<?php echo get_category_link(get_option('boldy_portfolio'))?>">All projects</a></li>
<?php
$categories = get_categories('hide_empty=1&child_of='.$categs);
foreach ($categories as $cat) {
echo ('<li><a href="');
echo (get_category_link($cat->cat_ID).'">'.$cat->cat_name.'</a></li>');
}
?>
</ul>
<?php } ?>
<div style="clear:both"></div>
<div class="gallery">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="portfolioItem">
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
<a href="<?php echo get_thumb_urlfull($post) ?>" rel="prettyPhoto" title="<?php the_title();?>"><?php the_post_thumbnail(); ?></a>
<p><?php the_excerpt() ?></p>
</div>
<?php endwhile; ?>
Thanks Nick.
Category is a taxonomy that applies to Posts. Pages are not Posts. Pages are Pages.
If you need your content to use the Category taxonomy, you have a couple options:
Register the Category taxonomy for static Pages, e.g. by placing the following in
functions.php
(or in a Plugin):Which will enable Categories for static Pages.
Grr… code doesn’t want to show:
Edit 2
The correct way to modify the main loop query is via
pre_get_posts
, e.g. like so:Using
pre_get_posts
is preferred over usingquery_posts()
, though the original solution works in this case.(Original Solution)
To get your categorized Pages to display in the Loop on your category archive indexes, you’ll need to modify the Loop query in
category.php
, which you do using thequery_posts()
function. e.g.:Place this code before you output the Loop.