Alle Kategorien der angezeigten Artikel anzeigen

  • Ich würde gerne wissen wie ich alle Kategorien (Name und ID jeweils als Variable) der Artikel auslesen kann die auf der jeweiligen Seite angezeigt werden.

    Zum Beispiel so:

    Auf der Seite werden 5 Artikel angezeigt:

    Artikel 1 - Kategorie A
    Artikel 2 - Kategorie B
    Artikel 3 - Kategorie C, Kategorie B
    Artikel 4 - Kategorie A

    Ich möchte jetzt alle Kategorien separat anzeigen lassen das es so aussieht:

    Kategorie A, Kategorie B, Kategorie C

    Artikel 1 - Kategorie A
    Artikel 2 - Kategorie B
    Artikel 3 - Kategorie C, Kategorie B
    Artikel 4 - Kategorie A

    (in der Datenbank sind aber noch weitere Kategorien)


    habe es erst versucht mit get_the_categorie aber bin nicht weit gekommen, da alle Kategorien anzeiget werden und nicht nur die von den Artikeln die Tatsächlich zu sehen sind.

    • 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

  • hast du schon mal the_category probiert: http://doku.wordpress-deutschland.org/Template_Tags/the_category

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Also wenn Du nicht komplett eine eigene Query dazu schreiben willst, würde ich mir folgendes Vorgehen vorstellen: Normalen Loop auf der Seite durchlaufen und darin jeweils mit get_the_category die Kategorien des aktuellen Artikel ausgeben lassen. Die einem vorher definierten globalen Array hinzufügen, als Key den Titel nehmen, so dass Duplikate überschrieben werden. Dann am Ende vielleicht das Array noch alphabetisch sortieren bei Bedarf. Die Liste der Kategorien steht Dir dann natürlich erst zur Verfügung, wenn Du durch den Content-Bereich durch bist. Könnte also ganz unten auf der Seite ausgegeben werden oder je nach Theme auch in der Sidebar. Wenn Du es auf jeden Fall ganz oben brauchst, müsstest Du das gleiche machen, ohne die Artikel in dem Loop auszugeben.

    Geht vielleicht auch noch einfacher, aber das wäre jetzt mal mein erster Ansatz dazu. ;-)

  • Das mit dem Array klingt nach genau dem was ich brauche, nur übersteigt das meine Codingfähigkeiten, da ich nichtmal weiss was ein Key ist.

    Kannst du mir vielleicht ein Beispiel im Groben geben mit dem ich weiterarbeiten kann?

  • Ok, ich hab das mal schnell geschrieben und getestet. Sieht gut aus soweit. Den Präfix "sd_" an den Variablennamen kannst Du durch etwas ersetzen, was für Deine Seite Sinn macht. Das soll nur vermeiden, dass man damit aus Versehen andere Variablen überschreibt. Alle drei Code-Schnipsel müssen natürlich in einem PHP-Bereich stehen, also innerhalb von <?php ... ?>.

    Also, ganz oben in die Datei kommt das hier (über while .. have_posts):

    PHP
    // create a global array for all categories
    $sd_categories = array();

    Dann irgendwo innerhalb des Loops:

    PHP
    // add the categories of the current posting to the array
      $sd_post_categories = get_the_category();
      foreach ($sd_post_categories as $sd_category) {
        $sd_categories[$sd_category->name] = $sd_category;
      }

    Damit werden die Kategorien aller Posts in das Arrays einsortiert. Und dann nach dem Ende des Loops (endwhile):

    PHP
    // sort the array alphabetically by name
      ksort($sd_categories);
      // output a list of all categories
      if (count($sd_categories) > 0) {
        echo '<ul>';
        foreach ($sd_categories as $category) {
          echo '<li class="' . $category->term_id . '">' . $category->name . '</li>';
        }
        echo '</ul>';
      }

    Ab dem zweiten Comment wäre das Code zur Ausgabe als HTML-Liste. Du kannst mit dem Array aber ansonsten auch alles mögliche anstellen, z.B. Dir ein Widget schreiben, was prüft, ob dieses globale Array vorhanden ist und es ggf. ausgibt. So könnte das dann in die Sidebar kommen (falls diese in Deinem Theme nach dem Contentbereich ausgegeben wird).

Jetzt mitmachen!

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