Hallo liebe Wordpress Gemeinde,
ich habe 3 Probleme die ich trotz googln und Forensuche quälen nicht lösen kann. Den ein oder anderen Ansatz dazu habe ich im Netz gefunden aber scheinbar funktionieren die nicht unter der aktuellen WP Version.
Problem 1
Ich habe eine Hauptkategorie und dazu mehrere Unterkategorien.
Beispiel:
Fußball = Hauptkategorie
Fußball Ergebnisse = Unterkategorie
Fußball Spielplan = Unterkategorie
Tennis = Hauptkategorie
Tennis Ergebnisse = Unterkategorie
Tennis Berichte = Unterkategorie
Ich möchte das in der normalen Ansicht - Startseite, Suchseite oder Monatsarchiv nur die Hauptkategorien agezeigt werden. Dazu nutze ich die Funktion:
wp_list_categories('title_li=&depth=1')
Soweit so gut. Nun möchte ich aber dass wenn ich die Hauptkategorie Fußball aufrufe die beiden Unterkategorien mit angezeigt werden. Allerdings nur die Unterkategorien von Fußball und nicht die von Tennis. Wie kann man das machen dazu finde ich einfach nichts. Mit Pages hab ich das schon realisiert und zwar so, für diejenigen die es interessiert:
<?php
global $id;
$children = get_pages('child_of='.$post->ID);
if( count( $children ) != 0 ) {?>
<h3><?php echo get_the_title($ID); ?></h3>
<div class="cat">
<ul>
<?php
wp_list_pages("title_li=&child_of=$id");?>
</ul>
</div>
<?php
;}
?>
Alles anzeigen
Das ergibt eine Überschrift der Hauptseite und die jeweiligen Unterseiten als Aufzählungsliste.
Problem 2
Wenn ich die Hauptkategorie aufrufe, zum Beispiel Tennis, werden alle Artikel gelistet auch die aus den Unterkategorien. Es sollen allerdings gar keine angezeigt werden weil es in der Hauptkategorie keine Artikel geben soll sondern einen festen Beitrag als Kategorie Beschreibung. Mit der Funktion category_description() geht das allerdings nicht weil auch Bilder in der Beschreibung enthalten sein sollen. Was im Grunde genommen mein 3. Problem ist.
Folgenden Code habe ich gefunden, in mein functions.php gepackt und ohne Erfolg ausprobiert:
<?php
function fb_filter_child_cats($query) {
$cat = get_term_by('name', $query->query_vars['category_name'], 'category');
$child_cats = (array) get_term_children( &$cat->term_id, 'category' );
// also possible
// $child_cats = (array) get_term_children( get_cat_id($query->query_vars['category_name']), 'category' );
if ( !$query->is_admin )
$query->set( 'category__not_in', array_merge($child_cats) );
return $query;
}
add_filter( 'pre_get_posts', 'fb_filter_child_cats' );
?>
Alles anzeigen
Damit wollte ich erreichen das zumindest die Artikel nur in einer Kategorie angezeigt werden. Scheinbar funktioniert der Snippet nicht unter der aktuellen WP Version.
Ich würde mich riesig freuen wenn Ihr mir bei der Lösung helfen könntet.
Liebe Grüße Peter