Kategorien in einem Dropdown-Feld anzeigen (unterschiedliche Szenarien)

  • Hallo ihr Lieben,
    dies ist meine erste Frage (nach Jahren :)) in Bezug auf Wordpress und somit auch hier mein erster Post.
    Meine Wenigkeit heisst Michi, kommt aus dem Süden Bayerns und beschäftigt sich seit längerem intensiv mit Computer und setzt seit wenigen Jahren ein paar Webseiten um. Das war das Vorwort, möchte ich doch gleich beginnen:
    Momentan ist http://forge-movies.com meine einzigste Baustelle. An einem lokalen Webserver (LAMP) pflege ich die Änderungen ein und teste diese vor Onlineschaltung fleissig. Von daher seht ihr auf F-M.com noch nichts von dem größeren Vorhaben. Zumindest könnt ihr ein Bild von der Webseite bzw. dem Projekt machen.

    Die Kategorien sind wie folgt aufgebaut:

    • Home

      • Montages

        • Assassine
        • Warden
        • Pyromancer
        • Shaman
      • Guides

        • Assassine
        • Warden
        • Pyromancer
        • Shaman
      • Guides

        • Assassine
        • Warden
        • Pyromancer
        • Shaman


    Mittels wp_dropdown_categories habe ich es geschafft, in der jeweiligen Kategorie (Montages, Arena, Guides) mir nur die Unterkategorien (Spielerklassen) anzeigen zu lassen (quasi eine Klassenauswahl).
    Mit folgendem Code lasse ich mir die Unterkategorien (Spielerklassen) anzeigen:

    PHP
    <form action="<?php bloginfo('url'); ?>/" method="get" style="display:inline;">
    <?php
        $select = wp_dropdown_categories('show_option_none=Select Class&show_count=1&orderby=name&title_li&echo=0&child_of=' . $cat);
        $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select);
        echo $select;
    ?>
    <noscript><input type="submit" value="View" /></div></noscript></form>

    Mittlerweile quäle/irre ich mich fast eine halbe Woche durch das Internet. Ist man(n) jetzt in der untersten Kategorie (beispielsweise ->Montages->Assassine) zeigt mir das Dropdownfeld keine Einträge mehr an, was auch logisch ist, weil es keine weiteren Unterkategorien gibt.

    Mit einer IF-Abfrage in Kombination mit dem richtigen WP-Codex lässt sich sicherlich die übergeordnete Kategorie herausfinden und in dem Dropdownfeld darstellen? Oder gibt es dazu elegantere Lösungen? Ein Plugin möchte ich nicht verwenden, sondern sogar WP von Plugins entlasten.

    Hm, kurz und bündig: Ich möchte mittels einer IF-Abfrage ermitteln, ob es noch weitere Unterkategorien gibt. Gibt es keine Unterkategorien (Spielerklassen) mehr, sollen aus der übergeordneten Kategorie (Guides, Arena,...) die Spielerklassen ausgelesen werden.

    Ich besitze die WP-Version 3.6.1

    Über Eure Hilfe und Tipps bin ich sehr dankbar. :)

    Liebe Grüße aus Bayern
    Michi

    Einmal editiert, zuletzt von kongreddgrass (16. September 2013 um 12:49)

    • 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

  • Danke für die schnelle Antwort. Hmm, ich glaube nicht dass das mit get_category_parents geht. Mit dem habe ich mich gestern schon ziemlich aufgeregt. Viel kann der nicht, was ich da gesehen habe.

    Jetzt habe ich eine Möglichkeit gefunden, um von einer "vordefinierten" Kategorie-Basis auf die Unterkategorieren zuzugreifen. Code wäre dieser:

    PHP
    <?php   
    $cat_id = get_cat_id('guides');  
    $select = wp_dropdown_categories('hierarchical=1&parent='. $cat_id);  
    $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select);  
    echo $select; 
    ?>

    komischerweise wird das Dropdown-Feld zweimal angezeigt (ein nicht funktionsfähiges links und gleich rechts daneben eins, das eben funktioniert). Egal wie oft ich den Code mit den anderen vergleiche, ich komm nicht dahinter, warum das so ist. :confused:

    Einmal editiert, zuletzt von kongreddgrass (16. September 2013 um 16:12)

  • kleiner push. Warum ist das so, dass zwei Dropdown-Felder statt einem angezeigt wird?
    im HTML-Code werden auch zwei unterschiedliche Felder gebildet, obwohl vorheriger Code verwendet wurde.
    Siehe folgendes Bild:

    Hat jemand von Euch selbiges auch schon erlebt? Dann kann mir ja wer auf die Sprünge helfen :-)
    Thx Liebe Grüße

    Einmal editiert, zuletzt von kongreddgrass (16. September 2013 um 21:05)

  • Das Problem mit den doppelten Dropdowns hab ich jetzt hinter mir, nachdem ich mir verschiedene Codes zu Augen geführt habe :-)
    Die Funktionsreferenz von wp_dropdown_categories sagt nämlich

    Zitat


    echo
    (boolean) (optional) Send output to browser (1/True) or return output to PHP (0/False) Default: 1/True


    also gehört noch ein echo rein

    PHP
    wp_dropdown_categories('echo=0&hierarchical=1&parent='. $cat_id)


    Somit ist die Sache mit den doppelten Dropdowns für mich erledigt.

  • nachdem der vorherige Schritt, ein Dropdown-Feld zu realisieren, gelungen ist, gehe ich nun ans nächste.
    Mit einer IF-Abfrage ermittle ich die aktuelle Kategorie und gebe je nach Kategorie eine andere "Konfiguration" aus.

    Allerdings gibt er listet er die Kategorien nicht auf? Ohne if-Abfrage listet er mir die Kategorien auf, mit if-Abfrage nicht. Anscheinend wird aber "show_option_none=Categories" übergeben, da er mir das Feld "Categories" anzeigt.
    Jetzt wollt ich euch um Rat bitten, was ich hier falsch gemacht habe?

    Einmal editiert, zuletzt von kongreddgrass (17. September 2013 um 19:38)

  • Sieht nach Autsch'n aus. Hab leider nicht viel Zeit, aber ich geb Dir einfach mal den Tipp, in das Kategorie-Widget zu schauen und analog auch in die category.php. Habe so ein Kontextmenü mal für Pages geschrieben (get_post_ancestors war hier meine Rettung), aber das lässt sich leider nicht auf die Kategorien münzen.

    Evtl. hilft Dir hier auch get_term mit einem Filter weiter.

  • Also, ich will mein Problem nochmal beschreiben:

    Wenn ich in einer Unterkategorie (oder der letzten Elternkategorie) bin, soll dieser mir aber die Unterkategorien der betreffenden übergeordneten Kategorie bzw. der letzten Elternkategorie anzeigen.

  • Okay, ich hab nun eine andere Möglichkeit, die ich aber gar nicht gut finde, da das ziemlich dreckige Programmierung ist. Aber es funktioniert zumindest.
    Wenn ich in Elternkategorie "Guides" bin, dann sollen die Unterkategorien von Guides aufgelistet werden.
    Befinde ich mich jetzt aber in dieser Unterkategorie, dann listet er mir von der übergeordneten Elternkategorie die Unterkategorien auf.
    Das alles passiert aber erzwungenermaßen, weil ich ja die ID's prüfe und dann eben meine gewünschte Ausgabe mache.
    Mir gefällt der Code aber nicht. Guides ist ja nur eines von mehreren Kategorien. Neben Guides habe ich ja noch Arena und Montages, dann kommen noch die Unterkategorien dazu und der Code wird ellenlang.

    Was meint ihr? Was kann man besser machen oder zusammenfassen oder gar ganz anders?

  • [SOLVED]

    Ich danke mir, denn ich habs nun hinbekommen. Eigentlich total easy, aber da muss man ja mal durchblicken als einer der zwar paar Jahre mit WP arbeitet aber noch nie am Theme selbst rumgeschraubt hat :razz:

Jetzt mitmachen!

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