is_categoryparent ?

  • Hi, Ich stehe grade vor folgendem Problem: Ich arbeite an meinem eigenen Template. Ich habe eine Headernavigation, die im Prinzip Links zu meinen 3 Hauptkategorieren enthält (nenn wir sie mal Autos, Tiere und Musik). Die Sidebar soll nun je nach Kategorie unterschiedliche Subkategorieren anzeigen. Also: Wenn der User auf Autos im Header clickt, soll die Sidebar "bwm", "mercedes" usw anzeigen. Das funktioniert so weit. Nun soll aber die Sidebar auch die passenden Subkategorien anzeigen, wenn der User dann auf "bwm" clickt. Leider funktioniert is_category nicht dafür, weil es ja die parent-category nicht anspricht. Müsste also für jede neue Category immer den Code verändern. Gibt es dafür irgendeine bessere Lösung? Ich bräuchte also im Prinzip nen conditional Tag ála is_categoryparent bzw is_categorychild oder so. Jemand ne Idee?

    Einmal editiert, zuletzt von crizon (18. August 2009 um 14:02)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Hallo,

    probiers doch einfach mit wp_list_categories. Dort gibt es ein child_of

    Also:

    PHP
    <ul> 
    <?php wp_list_categories('child_of=8'); ?>
    </ul>

    In diesem Falle sollen die Unterkategorien der Kategorie ID 8 ausgegeben werden. Damit dies dynamisch gemacht wird, muss statt der 8 natürlich jetzt eine Variable hin, die den Wert überträgt.

    Ab hier weiß ich allerdings nicht mehr so gut. probiers mal mit:

    PHP
    <?php
    foreach((get_the_category()) as $category) { 
        echo $category->cat_ID . ' '; 
    } 
    ?>

    Diese beiden Codeschnipsel müssten jetzt nur noch verbunden werden. Hoffe das hilft dir etwas.

  • Danke dir schon mal für die Antwort. Habe leider von PHP wenig Ahnung und muss mir das dann nebenbei beibringen.

    Bin bei beim stöbern auf diese Funktion gestoßen:
    http://codex.wordpress.org/Function_Refer…_is_ancestor_of

    Das ist fast genau das was ich suche. Dort sind es jeweils eine spezifische Eltern- und Kindkategorie; ich bräuchte jetzt ja "nur" anstatt der spezifischen Kindkategorie die gerade angzeigte Kindkategorie.

    Wie verändere ich das dementsprechend?

  • Was du gefunden hast, ist ein Conditional Tag, ein boolscher Wert. Damit kannst du überprüfen /testen lassen, ob die Bedingung wahr oder falsch ist. Ist sie wahr wird der Codeblock ausgrführt (bspw. die Unterkategorien ausgeben). Ist er falsch wird er übersprungen und gibt nichts aus.

    Ich weiß nicht, ob dir dieser Conditional Tag hilft.

  • Das ist mir schon klar ;)

    Ich kann ja mal den relevaten Codeteil meiner Sidebar posten:

    PHP
    <?php if (is_category('Design') { 
    wp_list_cats('child_of=7&optioncount=0'); 
    } elseif (is_category('Media'))  {
    wp_list_cats('child_of=8&optioncount=0');
    } elseif (is_category('Work'))   {
    wp_list_cats('child_of=9&optioncount=0');
    } else {
    wp_list_cats('sort_column=name&optioncount=0&hierarchical=0&list=1'); } ?>

    Wie ihr seht, check ich jeweils auf Kategorie Design, Media und Work. Wenn jetzt aber ein Unterkategorie angewählt wird, greif der conditional Tag nicht mehr und zeigt alle Kategorien an..

  • Hallo,

    So lautet der Code:

    PHP
    if (is_category()) {
      $this_category = get_category($cat);
      if (get_category_children($this_category->cat_ID) != "") {
        echo "<h1>Unterkategorie</h1>";
        echo "<ul>";
        wp_list_categories('orderby=id&show_count=0&title_li=
    &use_desc_for_title=1&child_of='.$this_category->cat_ID);
        echo "</ul>";
      }
    }

    via Google gefunden

  • Vielen Dank für deine Mühen :-)

    Wo hast du das denn her?
    Ich verstehe nicht so ganz, wie ich das nun anwenden soll.. ich muss ja irgendwie die abzufragende Parent-Kategorie reinschreiben...

  • hast du den überhaupt den code von paulstelzer mal anstelle deines code ausprobiert? da wird doch abgefragt um welche kategorie es sich handelt.


    Hallo,
    ich hatte vor zwei Tagen hier auch die gleiche Anfrage gestellt und suche schon eine Weile nach einer Lösung. Ich habe den Code von paulstelzer ausprobiert, aber da wurde gar nichts angezeigt.

    Dafür habe ich nun die Inspiration, wie ich meinen Code abwandle, damit getan wird, was getan werden muss. ;-)

    Ich zeige die Unterkategorien zusätzlich noch auf der Artikelseite an, das funktioniert habe nur, wenn der Artikel nur Unterkategorien aus der gleichen Oberkategorie zugewiesen ist, sonst kommt dabei Kategoriegulasch raus.

    PHP
    <?php if ( is_category() || is_single() ) {
      $this_category = get_the_category();
      if ( $this_category[0]->parent > 0 ) {
      echo '<div class="widget categories widget-categories">
            <div class="widget-inside">
            <h3 class="widget-title">'.get_cat_name ( $this_category[0]->parent ).'</h3>
            <ul class="categories">';
      wp_list_categories("hide_empty=0&child_of={$this_category[0]->parent}&title_li=");
      echo '</ul></div></div>';
      } } ?>

    Probier mal aus, ob das bei dir funktioniert.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!