Weitere Informationen und den Download findest du auf der offiziellen Anlaufstelle de.wordpress.org
Ergebnis 1 bis 8 von 8
  1. #1
    PostRank: 2
    Registriert seit
    08.10.2007
    Beiträge
    75

    Verschachtelte Kategorien

    Hallo Forum,

    ich kämpfe hier mit verschachtelten Kategorien. Ich kann leider keine wirkliche Regelmässigkeit herausfinden, WP schient es nicht so genau zu nehmen oder ich bin zu blöd ;(

    Ich habe Kategorien nach folgendem Muster angelegt:

    Kunden
    - Agentur_A
    -- Endkunde 1
    -- Endkunde 2

    Nun möchte ich meinen Beitrag der Kategorie "Endkunde 2" zuordnen und erwarte, dass er damit automatisch auch den Eltern der Kategorie zugeordnet ist, mir das verschachtelt im Widget des Backends angezeigt wird und der Permalink entsprechend aussieht. Allerdings verhält sich das anders. Wenn ich nur "Endkunde 2" als Kategorie festlege, sieht zwar der Permalink aus, wie erwartet, aber es werden weder alle 3 Kategorien im Widget, noch im Frostend angezeigt. Wähle ich für meinen Beitrag nicht nur "Endkunde 2", sondern auch deren Eltern aus, ist die Anzeige im Backend-Widget wie erwartet, allerdings stehen erstens die Eltern nicht mehr im Permalink, zweitens werden zwar alle 3 Kategorien im Frontend angezeigt, allerdings ist die Reihenfolge Wildwuchs. In dem konkreten Fall werden die Kategorien in der Reihenfolge: Endkunde 2, Kunden, Agentur_A aufgelistet, d.h aus der Reihenfolge lässt sich weder die Hierarchie ableiten, noch ist alphabetisch.

    Kann mir das jemand erklären?


    gruss,
    heinetz

    --


  2. #2
    PostRank: 10
    Registriert seit
    28.07.2011
    Beiträge
    1.603
    Zitat Zitat von heinetz Beitrag anzeigen
    Kann mir das jemand erklären?
    Sorry, das scheitert bei mir schonmal daran, dass ich überhaupt nicht verstehe, was du jetzt eigentlich gemacht hast, welches Ergebnis du erwartet hättest und welches du erhalten hast.

    Verschachtelte Kategorien – soweit, sogut. Ich hoffe, du hast das darüber gemacht, dass du in der Verwaltung der Kategorien jeweils die Elternkategorie ausgewählt hast.

    Was ist ein „Widget des Backends“? Und wenn ja, welches Widget meinst du?
    Und welche Kategorien sollen wie im Widget oder im Frostend angezeigt werden? Irgendwie ist es etwas schwierig, dir zu folgen …

    Gruß
    helix

  3. #3
    PostRank: 2
    Registriert seit
    08.10.2007
    Beiträge
    75
    Sorry, ich hatte den Beitrag geschrieben, nachdem ich lange versucht hatte, das hinzubekommen. Nun versuche ich nochmal, es anders zu erklären.


    Ich habe zuerst 30 Beiträge angelegt.

    Ein Auszug:

    a) Beitrag A
    b) Beitrag B
    c) Beitrag C
    ...


    Danach habe ich in der Verwaltung 27 Kategorien zusätzlich zu der Kategorie 'Allgemein' angelegt und sie nach folgenden Muster verschachtelt.

    Ein Auszug:

    1) Kunden
    2) - Agentur_2
    3) -- Endkunde 3
    4) -- Endkunde 4
    ...
    (2 ist also Kind von 1, 3 und 4 sind Kinder von 2 und 1 hat keine Eltern. Die Bezeichnungen spielen im Moment noch keine Rolle)
    Bis zu diesem Zeitpunkt sind sämtliche Beiträge (automatisch) nur der Kategorie "Allgemein" zugeordnet. Um diese Zuordnung zu ändern, rufe ich bspw. Beitrag A über "Betrag bearbeiten" im Editor auf. Dort in der Sitebar (rechte Spalte) gibt es eine 'Box' mit dem Label Kategorien (die habe ich in meinem ersten Beitrag „Widget des Backends“ genannt). In dieser Box werden mir sämtliche Kategorien als verschachtelte Liste von Checkboxen angezeigt und nur die Checkbox für die Kategorie "Allgemein" ist gecheckt. Wenn ich nun über "Betrag ansehen" in's Frontend (keine Ahnung, ob die Bezeichnung 'Frontend' stimmt. Korrigiert mich bitte im Zweifel) wechsle (der Beitrag also mit single.php dargestellt wird), sehe ich auch dort eine Liste von Kategorien. Diese Liste besteht erwartungsgemäss aus nur einem Eintag "Allgemein". Die URL lautet http://example.dev/allgemein/betrag_a/.



    Jetzt versuche ich, meinen Beitrag A einer anderen Kategorie zuzuordnen...

    erster Versuch
    Ich wechsle also wieder in den Editor, wähle in der Box Kategorien als erstes die Checkbox "Allgemein" ab und die Checkbox "
    Endkunde 3" aus und speichere meine Änderungen.

    Drei Dinge fallen mir auf:


    1. (Editor) Die Darstellung der Liste in der Box 'Kategorien' hat sich geändert. Der Listenpunkt "Endkunde 3" ist gecheckt aber er wird nicht mehr als Unterpunkt von "Agentur_2" sondern auf oberster Ebene dargestellt.


    2. (Fontend) Die Liste Kategorien besteht nun (nur) aus dem einen Eintrag "Endkunde 3".


    3. (Fontend) Die Url lautet nun http://example.dev/kunden/agentur_2/endkunde_3/beitrag_a/



    In Bezug auf mein gewünschtes Ergebnis:



    1. (Editor) Das finde ich inkonsistent aber es ist mir letztlich egal.


    2. (Fontend) Ich hätte gerne gesehen, dass neben der Kategorie "Endkunde 3" auch deren Eltern angezeigt werden.


    3. (Fontend) Die Url entspricht genau dem, was ich benötige.



    zweiter Versuch
    Ich wechsle also wieder in den Editor, wähle in der Box Kategorien ausser der Checkbox "
    Endkunde 3" auch deren Eltern "Agentur_2" und Grosseltern "Kunden" aus. Nun speichere meine Änderungen.

    Drei Dinge fallen mir auf:


    1. (Editor) In der Box 'Kategorien' werden die drei ausgewählten Kategorien nun wieder hierarchisch dargestellt.


    2. (Fontend) Die Liste Kategorien besteht nun aus allen drei gewählten Kategorien.


    3. (Fontend) Die Url lautet nun http://example.dev/kunden/beitrag_a/



    In Bezug auf mein gewünschtes Ergebnis:



    1. (Editor) Das entspricht meinen Erwartungen aber es ist mir letztlich egal.


    2. (Fontend) Nun werden zwar ausser der Kategorie auch deren Eltern und Grosseltern angezeigt aber aus der Sortierung (1. Eltern, 2. Grosseltern, 3. Kategorie) lässt sich die Hierarchie nicht ableiten.


    3. (Fontend) In der Url fehlen nun die Eltern. Dass die Grosseltern angezeigt werden, hängt sicher mit meiner Einstellung unter Permalink zusammen.


      [x] Benutzerdefiniert
      http://example.dev/%category%/%postname%/

      Im Platzhalter %categorie% steht in dem Moment allerdings der Wert für die Grosseltern.



    Fazit
    Entweder ich mache einen Fehler oder ich krieg's mit Bordmitteln nicht hin ;( Ich habe mich im Moment darauf beschränkt, alles wie im ersten Versuch zu lösen und damit auf die Darstellung der Eltern und Grosseltern im Frontend erstmal zu verzichten, weil ich die Darstellung eh programmatisch anpassen muss. Aber dazu möchte ich erstmal Klarheit haben, ob ich bis hierher irgendwas falsch mache.


    Danke und
    gruss,
    heinetz

  4. #4
    PostRank: 10
    Registriert seit
    28.07.2011
    Beiträge
    1.603
    Danke, so wird die Sache klarer.

    Erster Versuch -> das sind verschachtelte Kategorien. Dein Beitrag ist in der Kategorie der untersten Ebene einsortiert und damit mittelbar auch in den Elternkategorien.

    Zweiter Versuch -> das ist Mehrfachzuweisung zu mehreren Kategorien. Dass die Kategorien gleichzeitig (zufällig) auch hierarchisch verschachtelt sind, tut nichts zur Sache. WordPress weist immer eine Kategorie als „erste Kategorie des Beitrags“ zu, das ist (wenn ich mich nicht täusche), die Kategorie mit der niedrigsten ID.
    Das heißt: bei Mehrfachzuweisung bekommst du deinen Beitrag auch in den Archiven der weiteren Kategorien gelistet, aber ansonsten lässt sich nicht so wirklich damit arbeiten.

    Wenn du also wirklich verschachtelte Kategorien (und dazu die stimmigen URLs) willst, arbeite wie in Versuch eins.

    Die Darstellung im Editor, dass es da so aussieht, als wäre die Kategorie der untersten Ebene eine Kategorie der ersten Ebene – empfinde ich auch als inkonsistent (habe mir das gerade nochmal in meinem Spielblog angesehen). Kann ich mir eigentlich nur damit erklären, dass da jemand sich was sehr schlaues dabei gedacht hat (dem aber leider fast niemand mehr folgen kann). Du hast recht: nicht so wichtig.

    Darstellung der Kategorieliste im Frontend: ich vermute, dass das Standard-Kategorie-Widget von WordPress im Einsatz ist. Schau mal unter Design -> Widgets und klappe das Widget „Kategorien“ auf. Dann siehst du, dass du weitere Optionen hast, unter anderem, die Hierarchie deiner Kategorien abzubilden.

    Eine Sache fällt mir noch auf: Du schreibst, du hast im Frontend beim ersten Versuch nur die eine Kategorie (unterster Ebene) gelistet, in der der Beitrag einsortiert ist. Das könnte mit der Vorschau-Funktion zusammenhängen. Geh mal tatsächlich auf die Seite (waagrechte Admin-Bar, Link ganz links mit dem „Home“-Symbol), da müssten dir eigentlich alle existierenden Kategorien, zumindest alle, die Beiträge enthalten, gelistet sein, also zumindest die Standard-Kategorie „Allgemein“ müsste dort auch erscheinen.

    Gruß
    helix

  5. #5
    PostRank: 2
    Registriert seit
    08.10.2007
    Beiträge
    75
    Zitat Zitat von helix Beitrag anzeigen
    Wenn du also wirklich verschachtelte Kategorien (und dazu die stimmigen URLs) willst, arbeite wie in Versuch eins.
    Verstehe. Dann macht es Sinn so weiterzuarbeiten.

    Zitat Zitat von helix Beitrag anzeigen
    Die Darstellung im Editor, dass es da so aussieht, als wäre die Kategorie der untersten Ebene eine Kategorie der ersten Ebene – empfinde ich auch als inkonsistent (habe mir das gerade nochmal in meinem Spielblog angesehen). Kann ich mir eigentlich nur damit erklären, dass da jemand sich was sehr schlaues dabei gedacht hat (dem aber leider fast niemand mehr folgen kann). Du hast recht: nicht so wichtig.
    genau
    Zitat Zitat von helix Beitrag anzeigen

    Darstellung der Kategorieliste im Frontend: ich vermute, dass das Standard-Kategorie-Widget von WordPress im Einsatz ist. Schau mal unter Design -> Widgets und klappe das Widget „Kategorien“ auf. Dann siehst du, dass du weitere Optionen hast, unter anderem, die Hierarchie deiner Kategorien abzubilden.
    Gefunden. Allerdings benutze ich nicht das Standard-Widget, sondern meine Kategorie wird in bspw. single.php mit folgendem Code eingefügt:
    Code:
    <?php the_category(' ', ''); ?>
    Darüber hinaus wird die Kategorie im Code eines Plugins angegeben mit:
    Code:
    get_the_category()
    An wieder einer anderen Stelle habe ich ein jQuery-Skript geschrieben, dass sämtliche Posts per Ajax als JSON nachlädt. Für den JSON-Request verwende ich das Plugin REST API. Den Request beeinflusse ich in der functions.php

    Ich hatte gedacht, die Elternkategorie müsse für gewöhnlich in allen drei Fällen in dem zurückgegebenen Array stehen. Nach Deiner grundsätzlichen Klärung, dass die Elternkategorie einem Beitrag nicht zugeordnet werden soll, ist klar dass ich alle drei Stellen einzeln anfassen muss aber das dürfte ja kein Problem sein

    Zitat Zitat von helix Beitrag anzeigen
    Eine Sache fällt mir noch auf: Du schreibst, du hast im Frontend beim ersten Versuch nur die eine Kategorie (unterster Ebene) gelistet, in der der Beitrag einsortiert ist. Das könnte mit der Vorschau-Funktion zusammenhängen. Geh mal tatsächlich auf die Seite (waagrechte Admin-Bar, Link ganz links mit dem „Home“-Symbol), da müssten dir eigentlich alle existierenden Kategorien, zumindest alle, die Beiträge enthalten, gelistet sein, also zumindest die Standard-Kategorie „Allgemein“ müsste dort auch erscheinen.
    Das verstehe ich nun wieder nicht Macht aber nichts, denn nachdem mir das Prinzip klar ist, dass Elternkategorien nicht explizit zugeordnet werden sollen, verhält sich jetzt alles wie erwartet und wir würden vermutlich aneinander vorbeireden, wenn wir versuchen, das zu klären.

    1000 Dank für Deine sehr gute Erklärung!

    schönen Abend und bis zum nächsten Mal,
    gruss,
    heinetz

  6. #6
    PostRank: 2
    Registriert seit
    08.10.2007
    Beiträge
    75
    Hallo Forum,

    jetzt möchte ich doch noch auf dem Thema rumreiten um vielleicht etwas dazuzulernen

    An welchen einzelnen Stellen in den Template die Elternkategorie benötige, hatte ich ja geschrieben. Das an den betroffenen Stellen mit PHP zu machen, ist kein Problem. Allerdings geht das sicher "sauberer". Dazu nochmal von vorn:

    In meinem template single.php habe ich folgende Codeblock gefunden, der die Kategorie ausgibt:

    HTML-Code:
     <?php if( has_category() ) :  ?> <div class="post-categonry"> <span><?php _e('Category :', 'plutonthemes'); ?></span> <?php the_category(' ', ''); ?> </div> <?php endif; ?>
    Diesen Block habe ich kopiert und will meine Kopie sinnvoll anpassen:

    HTML-Code:
     <?php if( has_my_field() ) :  ?> <div class="post-categonry"> <span><?php _e('My Field :', 'plutonthemes'); ?></span> <?php the_my_field(' ', ''); ?> </div> <?php endif; ?>
    Da habe ich mir also erstmal Funktionen ausgedacht, die es noch garnicht gibt. Die Logik, die in den Funktionen steht, ist im Grunde klar. Die Frage, die sich mir stellt, ist eher wie und wo könnte ich jetzt die Funktionen vernünftig definieren und macht das überhaupt Sinn oder erzeuge ich so vielmehr Code?


    gruss,
    heinetz

  7. #7
    PostRank: 10 Avatar von SirEctor
    Registriert seit
    28.10.2008
    Beiträge
    8.936
    Schau mal hier: http://wordpress.stackexchange.com/q...f-current-post
    Das sollte dir helfen.
    Das Geheimnis des Könnens liegt im Wollen!

  8. #8
    PostRank: 2
    Registriert seit
    08.10.2007
    Beiträge
    75
    hello,
    erstmal danke für Deinen Tipp. Allerdings hätte ich mir schon zugetraut, im Code irgendwie an die Parent-Kategorie zu kommen. Meine Frage ist eher, ob ich die Logik in eine Funktion packen kann und natürlich kann ich auch grundsätzlich Funktionen mit PHP schreiben aber auf welche Weise und an welcher Stelle im Code so eine Funktion - im Sinne von Wordpress - sinnvollerweise definiert wird, damit ich den Code flexibel bleibt, würde ich gerne wissen.

    gruss,
    heinetz

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •