Display WordPress Parent Categories Only?

I have the following code on a custom wordpress page:

    <?php 
    $cat_array = array();
    $args=array(
      'post_type' => 'post',
      'post_status' => 'publish',
      'posts_per_page' => 10,
      'caller_get_posts'=> 1
      );
    $my_query = null;
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
      while ($my_query->have_posts()) : $my_query->the_post();
        $cat_args=array('orderby' => 'none');
        $cats = wp_get_post_terms( $post->ID , 'category', $cat_args);
        foreach($cats as $cat) {
          $cat_array[$cat->term_id] = $cat->term_id;
        }
      endwhile;
    }
    if ($cat_array) {
      foreach($cat_array as $cat) {
        $category = get_term_by('ID',$cat, 'category');
        echo '<a href="' . esc_attr(get_term_link($category, 'category')) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>'.'<br />';
      }
    }
    wp_reset_query();
?>

It lists the categories in order of most recently updated category first. How do I adjust the code to get parent categories only?

Read More

Example:

Basically, I would just like to display the top level category. For example:

Category – Subcategory – Sub Subcategory – Sub Sub Subcategory

Just Category.

Related posts

Leave a Reply

1 comment

  1. This should do what you’re looking for. It’s untested, I just whipped it up really quick right now, but the concept is there.

    function my_get_highest_parent( $id ) {
        $cat = get_category( $id );
        $parent = $cat->parent;
    
        if( $parent == 0 ) 
            return $id;
        else
            my_get_highest_parent( $parent );
    }