Hauptkategorie zeigt alle Unterkategorien mit Artikel an

 Childcategories on parentcategory
Childcategories on parentcategory -Unterkategorien geordnet auf der Hauptkategorie Artikeln aufgelistet

Du möchtest, dass man beim Klick auf die Hauptkategorie die Unterkategorien sieht mit einigen ihrer Artikel und einen *weiterlesen* Link, der zur jeweiligen Unterkategorie führt.

Hauptkategorie keinen Artikel

Dies ist nur sinnvoll, wenn man in der Hauptkategorie keinen Artikel hat. Aber mancher mag dies so, weil er so wichtige Worte in der URL unterbringt und seinen Besuchern genug Überblick durch die Aufteilung bieten kann. zb bei einem Portfolio oder einer Galerie.

Umblättern – Pagination

Ich habe diese Auflistung der Unterkategorien mit Artikeln absichtlich nicht zum *Umblättern* hergerichtet, weil dies ja wiederum den Überblick schmälert und 2. programmiertechnisch ein wenig mehr Aufwand wäre, der wegen des fehlenden Überblicks für die Besucher wiederum umsonst wäre.

html und Sprache anpassen

Der untenstehende Code muss für dich im HTML angepasst werden, ebenso musst du „mtsdreaming“ an dein Sprach“kürzel“ anpassen.

Diese category.php bietet sowohl Unterkategorien auf der Hauptkategorieseite wie eine ganz normale Kategorienansicht, die den *weiterlesen Link* zeigt.

Dies hat den Vorteil, dass man völlig frei Kategorien ohne Unterkategorien haben kann, aber auch Hauptkategorien mit Unterseiten, die man dann eben in der Hauptkategorie herzeigt.

unterschiedliche templates für unterschiedliche Kategorien

Magst du für unterschiedliche Kategorien ganz andere Ansichten haben, dann erstelle viele category-slug.php Dateien und WordPress erkennt diese. Allerdings rate ich persönlich davon ab, dass man Kategorieansichten sehr verschieden macht, weil dies verwirrt.

Außer bei Portfolios oder bei explizit so benannten Fotogalerien macht dies auch inhaltlich Sinn.

Hauptkategorie zeigt alle Unterkategorien mit Artikel an

Hier nun der Code für eine Hauptkategorie die die Unterkategorien geordnet anzeigt.
Die Unterkategorien sind hier in einer Liste dargestellt.
Ist man auf einer Unterkategorie sieht man den Inhalt des „the_excerpt“.
Hat diese Kategorie keine Unterkategorien, dann sieht man den Inhalt der Artikel bis zum „more“ tag.

Es ist viel, ich warne ;) Und es ist mit dem allerneuesten WordPress 3.5.1 im Februar 2013 getestet und funktioniert, sogar im debug Modus ;)


<?php get_header(); ?>		
<?php
$numposts = 3; // zeigt die Anzahl der Artikel pro Unterkat an
$cat_obj = $wp_query->get_queried_object();
if( $cat_obj->parent ) :
	$child_posts = get_posts('category=' . $cat_obj->term_id . '&numberposts=' . $numposts);
	if( $child_posts ) :?>
<h3 class="archive"><?php _e('Archive for','mtsdreaming'); ?><?php echo $cat_obj->name; ?></h3>		
<ul>
  <?php foreach( $child_posts as $post ) : ?>		
  <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
  <?php endforeach; ?>		
</ul>
<?php endif; else : ?>
<h3 class="archive"><?php _e('Archive for','mtsdreaming'); ?><?php echo $cat_obj->name; ?></h3>
<div <?php post_class(); ?>> 
<?php
 	global $wpdb;
 	$categories = $wpdb->get_results("SELECT $wpdb->terms.term_id, $wpdb->terms.name from $wpdb->terms INNER JOIN $wpdb->term_taxonomy ON $wpdb->terms.term_id = $wpdb->term_taxonomy.term_id WHERE taxonomy = 'category' AND parent = '{$cat_obj->term_id}' ORDER BY name ASC");
 	foreach($categories as $category) :
 		$child_posts = get_posts('category=' . $category->term_id . '&numberposts=' . $numposts);
 		if( $child_posts ) :?>
  <h3 class="archive"><?php echo $category->name; ?></h3> 		
  <ul class="clearfix">   
    <?php foreach( $child_posts as $post ) : 		setup_postdata($post);?> 		
    <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>  
    <br /><?php echo strip_tags(get_the_excerpt()); ?></li>   
    <?php endforeach; endif; ?>
    <li class="readmore">
      <?php _e(' &raquo; &raquo; more Articles:','mtsdreaming'); ?>
      <?php the_category(',') ?></li>     
  </ul> 
  <?php endforeach; endif; ?>
</div><!--end of childcategories on parentcategory-->    
<?php if( !$child_posts ) :  if (have_posts()) : ?>		 
<?php $post = $posts&#91;0&#93;; // Hack. Set $post so that the_date() works. ?>
<?php if (is_category()) { ?>				 		
<p class="archive"><?php echo strip_tags(category_description()); ?></p>	
<?php } ?>	
<?php while (have_posts()) : the_post(); ?>
<div <?php post_class(); ?>> 
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>  		   
  <?php the_content("&raquo;&raquo;  " . the_title('', '', false)); ?> 		   
  <p class="metadata">				     
    <?php _e('Filed under:','mtsdreaming'); ?>      
    <?php the_category(',') ?> |      
    <?php if (get_the_tags()) the_tags('',',',' |'); ?>     
    <?php comments_popup_link(__('No Comments','mtsdreaming'), __('1 Comment','mtsdreaming'), __('% Comments','mtsdreaming'), '', __('Comments off','mtsdreaming')); ?>     
    <?php edit_post_link(__('edit','mtsdreaming'),' | '); ?>   
  </p>    
</div><!--end of post-->		
<?php endwhile;endif;?>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Erstveröffentlichung:05. März 2009 ;)

Bei Fragen einfach fragen. ,war es hilfreich freu ich mich über Rückmeldung!
8

8 Beiträge zu “Hauptkategorie zeigt alle Unterkategorien mit Artikel an

  1. Kommentar Autor
    Andreas
    Kommentar

    Hallo Monika,

    klasse Artikel!

    Er trifft schon fast das was ich suche, aber leider nur fast. Wenn ich Artikel in einer Unterkategorie anklicke, dann geht in der Sidebar in der Artikelansicht der Kategorienbaum zu. Wie kann ich denn die Kinder der Hauptkategorie anzeigen lassen, wenn ich einen Artikel aus einer der Unterkategorien lese? (vgl. website…)

    Viele Grüße,
    Andreas

  2. Kommentar Autor
    Monika
    Kommentar

    hi Andreas
    das ist eine Frage welche Menü-NaviPlugin du verwendest

  3. Kommentar Autor
    markomann
    Kommentar

    ja genau das hab ich gesucht, doch leider wird bei meiner mehrsprachigen seite die unterkategorie nicht übersetzt.
    ich benutze qtranslate.

    ich glaube das problem liegt in dieser zeile.

    name; ?>

    hab aber keinen schimmer wie es zu beheben wäre.

  4. Kommentar Autor
    markomann
    Kommentar

    hier nochmal die zeile.

    ?php echo $category->name; ?

  5. Ping wp-popular.com » Blog Archive » Hauptkategorie zeigt alle Unterkategorien mit Artikel an

  6. Kommentar Autor
    Martin
    Kommentar

    Vielen, vielen Dank. Nach diesem Code suche ich schon seit Tagen.

  7. Kommentar Autor
    Stephan
    Kommentar

    Hi super Script….

    Ich versuche name; ?> klickbar zu machen…
    Für´s erste würde es auch reichen wenn man duch die querry auch noch „slug“ abfragen könnte… soweit reichts dann aber bei mir leider doch nciht ;-)

    hast du eine Idee?

    Danke

  8. Kommentar Autor
    Stephan
    Kommentar

    Ich meine natürliche

    ?php echo $category->name; ?