A better solution would be to create a “Project” post type and a custom taxonomy to separate the different types of projects.
I recently did this on my own website because I wanted a way to keep my projects separate from the rest of my content. I used jQuery cycle instead of Nivo but the concept is the same.
Custom post types have a built in user interface so it wont be confusing for your client to add new projects.
It will also allow you to customize the way the “Projects” are displayed using a single-project.php template file.
I won’t go into how to register post types because The Codex explains this very well but I will show you how to get all the attached images to the post and display them in the slider.
<?php
//The following code is for a sample single-post_type.php
?>
<?php get_header(); ?>
<div id="content">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h1 class="project-title"><?php the_title(); ?></h1>
<div class="entry">
<div id="slider">
<?php
// This gets all the images attached to the current post inside the loop
$args = array(
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => null,
'post_parent' => $post->ID
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $attachment) {
echo wp_get_attachment_image($attachment->ID,'medium', false);
}
} ?>
</div> <!-- /slider -->
<?php the_content(); ?>
</div> <!-- /post -->
<?php endwhile; else: ?>
<p><?php _e('Not Found','your_theme_name'); ?></p>
<?php endif; ?>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>