Category template to show different categories based on parent

I managed to do something like you are describing, but for a custom taxonomy.. with a little snippet of extra code. No doubt there is a much better way to write the code, and on top of that there is most likely a much more efficient way to accomplish this.

But this worked, and is working on an active website. I will describe what I did and you can modify the code for your own needs:

My problem:
Like you, I wanted a universal page that would show whatever taxonomy term I sent to it, instead of having to create a taxonomy-slug.php file for every new term in my taxonomy.
To clarify: my Custom Post Type is Videos, and my custom taxonomy is Video Types

My solution
I managed to grab the taxonomy term from the listing of that taxonomy(grabs when someone clicks on that term) and then sends it to an archive page for that particular custom post type. It reads that term and then just shows the post type using that taxo0nmy term

My Code
Found this on the web somewhere. It gets pasted into the functions file:

/*add a filter to pass queries to pages
can be sent like so: <?= add_query_arg('t', 'argument', home_url( '/videos/' )); ?>
can be called like so:  $qvar = get_query_var('t');
*/
add_filter('query_vars', 'p_query');

    function p_query($qvars) {
        $qvars[] = 't';
        return $qvars;
    }

On the home-page, I list all of the different “Video Types” as clickable links using a wp-query to show the latest post for each of the different terms in the taxonomy.

The Query

$term_args=array(
    'orderby' => 'menu_order',
    'order' => 'DESC'
);
$terms = get_terms($taxonomy,$term_args);
if ($terms) {
  foreach( $terms as $term ) {
    $args=array(
      'post_type' => 'videos',
      'video_types' =>  $term->name ,
      'post_status' => 'publish',
      'posts_per_page' => 1,
      'caller_get_posts'=> 1
      );
    $my_query = null;
    $my_query = new WP_Query($args); 
    if( $my_query->have_posts() ) {  ?>
       <div class="thumb">
        <h3 class="darken"><?php echo $term->name;?></h3>

        <?php
      while ($my_query->have_posts()) : $my_query->the_post(); ?>

The Links
I then make each term in the loop a link like so:

<a href="https://wordpress.stackexchange.com/questions/31942/<?= add_query_arg("t', strtolower($term->name), home_url( '/videos/' )); ?>">
 <h3><?php echo $term->name;?></h3>
</a>

which then sends that term name along with the URL to the archives-video.php page. The link ends up looking like this:

http://thedomainname/videos/?t=theterm

And then the code on the archives-videos.php page looks like this:

The Archives page

<?php 

    $taxonomy = 'video_types';
    $qvar = get_query_var('t');
    $orderby      = 'name';
    $show_count   = 0;      // 1 for yes, 0 for no
    $pad_counts   = 0;      // 1 for yes, 0 for no
    $hierarchical = 1;      // 1 for yes, 0 for no
    $title="";
    $empty        = 0;

    $term = get_term_by('name', $qvar, $taxonomy);

  $args=array(  
    'taxonomy'     => $taxonomy, 
    'video_types'  => $qvar,
    'orderby'      => $orderby,
    'show_count'   => $show_count,
    'pad_counts'   => $pad_counts,
    'hierarchical' => $hierarchical,
    'title_li'     => $title,
    'hide_empty'   => $empty,
    'posts_per_page' => 8,
    );

        query_posts( $args); ?>




       <div class="vdescription">
        <h3 class="pagetitle"><?php echo $term->name;?></h3>

        <?php
            $termDiscription = $term->description;
                if($termDiscription != '') : ?>
                    <p><?php echo $termDiscription; ?></p>
                <?php endif; ?>
        </div>  <!--.vdescription -->

and below that I can list all of the videos in that particular taxonomy-term:

<?php while (have_posts()) : the_post(); ?>

    <?php the_post_thumbnail(); ?>

<?php endwhile;?>

So that gives me a universal page that will show whatever video-type I send to it..which allows the website owner to create whatever new video-type they want, which will automatically display on the home-page as a link.

Again, I think someone with a better working knowledge of PHP could write this in a better way (which I would love to see) but the idea is there and working.