WordPress.org

Ready to get started?Download WordPress

Forums

[resolved] display all subcategories within posts on single.php (13 posts)

  1. deftru
    Member
    Posted 3 years ago #

    Hi!

    I need a code to display all my subcategories within posts for single.php:

    like this:

    subcategory 1(if existing)
    - post 1
    - post 2
    - post n
    subcategory 2(if existing)
    - post 1
    - post 2
    - post n
    subcategory n(if existing)
    - post 1
    - post 2
    - post n

    thanks for respone

  2. alchymyth
    The Sweeper & Moderator
    Posted 3 years ago #

    in general:

    get the category id of the categories of the post
    http://codex.wordpress.org/Function_Reference/wp_get_post_categories

    foreach of the above - get the sub categories
    http://codex.wordpress.org/Function_Reference/get_categories
    'child_of' parameter to include sub-sub cats
    'parent' parameter to get only direct sub categories

    foreach of these sub categories - get the posts
    http://codex.wordpress.org/Template_Tags/get_posts
    'numberposts=-1' to show all posts
    'cat=' to get the posts of the subcategory

  3. deftru
    Member
    Posted 3 years ago #

    hi alchymyth!

    thanks 4 your response. i do have a code working on the category.php. but -and i am more webdesigner than programmer ;-) - i am not sure why it doesn't work on the single.php.

    maybe you could have a look and help me out: THX

    foreach((get_the_category()) as $category)
    	{
        $postcat= $category->cat_ID;
        $catname =$category->cat_name;
        }
    <h2><?php echo $catname; ?></h2>
    	<?php $categories = get_categories("child_of=5"); foreach ($categories as $cat) { ?>
    	<?php query_posts("cat=$cat->cat_ID&showposts=-1&order=ASC&orderby=name"); ?>
    		<h3><?php single_cat_title(); ?></h3>
    		<?php while (have_posts()) : the_post(); ?>
    
    		<div class="what">
    			<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to
    			<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
    		</div>
    	<?php endwhile; ?>
    <?php } ?>
  4. chinmoy
    Member
    Posted 3 years ago #

    <?php
    $post_categories = wp_get_post_categories( $post->ID );
    foreach($post_categories as $c){
      $cat = get_category( $c );
      echo "<h1>". $cat->name . "</h1>";
      $childCats = get_categories( array('child_of' => $c) );
      if(is_array($childCats)):
        foreach($childCats as $child){ ?>
            <h2><?php echo $child->name; ?></h2>
    <?php
            query_posts('cat='.$child->term_id);
            while(have_posts()): the_post(); $do_not_duplicate = $post->ID;
             //post code stuff here;
            endwhile;
            wp_reset_query();
        }
      endif;
    }
    ?>

    write this in single.php file.

    see this also this code for category.php or archive.php
    http://wordpress.org/support/topic/custom-category-page-display-subcategories-with-posts?replies=7

  5. chinmoy
    Member
    Posted 3 years ago #

    also see this http://wordpress.org/support/topic/category-navigation-`on-singlephp?replies=9

    $postcat= $category->cat_ID;
    $catname =$category->cat_name;`

    would be

    $postcat= $category->term_id;
    $catname =$category->name;
  6. deftru
    Member
    Posted 3 years ago #

    problem solved!
    THIS IS THE FUNCTIONING CODE FROM chinmoy29:

    <?php
    $post_categories = wp_get_post_categories( $post->ID );
    foreach($post_categories as $c){
      $cat = get_category( $c );
      echo "<h1>". $cat->name . "</h1>";
      $childCats = get_categories( array('child_of' => $c) );
      if(is_array($childCats)):
        foreach($childCats as $child){ ?>
            <h2><?php echo $child->name; ?></h2>
    <?php
            query_posts('cat='.$child->term_id);
            while(have_posts()): the_post(); $do_not_duplicate = $post->ID;
             //post code stuff here;
            endwhile;
            wp_reset_query();
        }
      endif;
    }
    ?>

    THX

  7. deftru
    Member
    Posted 3 years ago #

    a little problem..the result is perfect.. just one tiny little thing:

    at the end (have a look:
    http://www.goodandbad.net/sport-akustik/limited/perfekte-akustik-im-fur-forschung-und-lehre/)
    it writes one subcategory (presse)with with the style of the category (<h2>)

    but i just want to display the parent category with <h2> on top (Ltd.)

    <?php
    $post_categories = wp_get_post_categories( $post->ID );
    foreach($post_categories as $c){
      $cat = get_category( $c );
      echo "<h1>". $cat->name . "</h1>";
      $childCats = get_categories( array('child_of' => $c) );
      if(is_array($childCats)):
        foreach($childCats as $child){ ?>
            <h2><?php echo $child->name; ?></h2>
    <?php
            query_posts('cat='.$child->term_id);
            while(have_posts()): the_post(); $do_not_duplicate = $post->ID;
             //post code stuff here;
            endwhile;
            wp_reset_query();
        }
      endif;
    }
    ?>

    Presse should not be displayed.
    would be glad if this could be fixed.

  8. chinmoy
    Member
    Posted 3 years ago #

    replace this echo "<h1>". $cat->name . "</h1>"; with echo "<h2>". $cat->name . "</h2>";

  9. deftru
    Member
    Posted 3 years ago #

    no, that is not the problem.:)

    the problem is that the function :
    echo "<h1>". $cat->name . "</h1>";
    writes 2 categories. one at the beginning - which is good and one at the end (which is a subcategory in category-style) .

    i think the foreach function is placed wrong. hope u know what i mean.
    thx anyway

  10. chinmoy
    Member
    Posted 3 years ago #

    One will show parent category name and another will be subcategory name.
    Now it is display this way.

  11. chinmoy
    Member
    Posted 3 years ago #

    chnage this line echo "<h1>". $cat->name . "</h1>"; with this

    if($cat->parents)
     echo "<h1>". $cat->name . "</h1>";
  12. deftru
    Member
    Posted 3 years ago #

    nope. writes nothing..

    everything else is fine. i just need the parent category. and best outside any loop.

    echo(get_category_parents($cat, TRUE, ' &raquo; '));

    writes for example
    category >>
    subcat
    post
    subcat
    post
    category >> subcategory

  13. chinmoy
    Member
    Posted 3 years ago #

    I am so busy. If you want to contact with me, sent mail chinmoy29 at gmail dot com

Topic Closed

This topic has been closed to new replies.

About this Topic