Nur Subcategory anzeigen ohne parent

  • Hallo,

    ich würde gerne nur subcategories anzeigen lassen die für den beitrag ausgewählt wurden siehe hier:

    http://www.web91.s67.goserver.host/2016/03/03/test-3/

    hier steht vor den subcategories "Motivation" und "Gesundheit" jeweils ein Körper und Geist sowie am ende nochmal Körper und Geist, ich möchte nur Motivation und Gesundheit anzeigen lassen. Also entweder muss man das denke ich mal so darstellen das nur subcategories angezeigt werden oder man wählt alle kategorien aus AUSSER die parents aber ich bin totaler noob in php und weiß nicht wie man das umsetzen kann, bitte um hilfe

    derzeit steht dafür:

    PHP
    <?php the_category( $separator, $parents = 'single', $post_id ); ?>

    Einmal editiert, zuletzt von frkyflwn (28. April 2016 um 22:15)

    • 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

  • Versuch es mal mit den Default-Werten.

    PHP
    <?php the_category(); ?>

    Wenn du keinen anderen Separator angeben willst, kann der Platz leer bleiben => ist Default
    Parent-Kategorien werden nur mit angegeben, wenn bei

    Code
    $parents

    was eingetragen ist => Default ist empty, ist: wenn es eine Child-Kategorie ist, wird nur die Child-Kategorie ausgegeben.
    ID? Du bist doch sowieso im Loop. Also nimmt er die ID vom aktuellen Beitrag …

    Alles gut … (oder?)

    Gruß
    helix

  • leider nicht.. ich hab es so schon versucht: <?php the_category(', ', 'single') ?>

    aber dann passiert das was du gerade siehst, es werden immer noch die parents angezeigt, wo liegt der fehler?

  • ich habe diesen code gefunden:

    PHP
    <?php		  foreach((get_the_category()) as $category) {
    			if ($category->category_parent  != 0) {
    			echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr(strip_tags($category->name)) . '" ' . '>' . $category->name.'</a> ';
    			}
    		  }
         ?>

    der funktioniert auch aber wie kann ich die kategorien dann durch ein komma trennen wenn mehrere angeben sind wie bei diesem beispiel?

    http://www.web91.s67.goserver.host/2016/03/03/test-3/

  • Nein, du hast mich falsch verstanden. Ich meinte, du sollest the_category(); ganz ohne Angaben innerhalb der runden Klammern aufrufen, weil ich mit meinen rudimentären Englischkenntnissen das so verstanden habe, dass du dann nur die Child-Kategorie(n) bekommst.

    Zitat

    $parents (string) (optional) How to display links that reside in child (sub) categories. Options are:
     ▪ 'multiple' - Display separate links to parent and child categories, exhibiting "parent/child" relationship.
     ▪ 'single' - Display link to child category only, with link text exhibiting "parent/child" relationship. Default: empty string
    Note: Default is a link to the child category, with no relationship exhibited.


    Quelle: https://codex.wordpress.org/Function_Reference/the_category

    Gruß
    helix

  • leider nicht, schon getestet, da wird die parent category mit ausgegeben.
    Wie gesagt ich hab ja den code ja jetzt nur würd ich gerne noch ein komma einfügen lassen wenn mehrere subcategories ausgewählt sind von diesem code:

    PHP
    [COLOR=#333333] <?php		  foreach((get_the_category()) as $category) {[/COLOR]			if ($category->category_parent  != 0) {
    			echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr(strip_tags($category->name)) . '" ' . '>' . $category->name.'</a> ';
    			}
    		  } [COLOR=#333333]     ?>[/COLOR]
  • kann denn keiner helfen?! ^^'


    Doch. Du selber.
    Sorry, dass ich jetzt ein bisschen hart werde: einfach mal lesen lernen.

    Nimm den Code-Schnipsel, den ich in Post #2 zuoberst gepostet habe. Du hast es so nicht getestet. Ich habe es gerade mal für dich getestet – inclusive Testkategorien anlegen und verschachteln – es funktioniert so, wie du beschrieben hast, dass es funktionieren soll.

    Gruß
    helix

  • Hallo helix,

    ich habe es getestet.. habs auch mal drin gespeichert gelassen das du es sehen kannst sowohl auf der startseite:

    http://www.web91.s67.goserver.host/ sowie in diesem beispiel: http://www.web91.s67.goserver.host/2016/03/03/test-3/

    hab ich den codeschnipsel

    PHP
    [COLOR=#0000BB][FONT=monospace]<?php the_category[/FONT][/COLOR][COLOR=#007700][FONT=monospace](); [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]?>[/FONT][/COLOR]

    von dir verwendet, ich hatte das gleiche auch schon gelesen bevor ich diesen thread aufgemacht habe, ich dachte deswegen man muss noch den wert "single" irgendwie eintragen,
    aber ich hab keine ahnung wie das funktioniert und du meintest es funktioniert sogar mit den default werten was mich noch verwirrter macht..

  • Geh bitte in den Admin-Bereich zum Beitrag und schau, ob du dem außer den beiden (Child-) Kategorien „Fitness“ und „Gesundheit“ auch die (Parent-) Kategorie „Körper & Geist“ explizit zugewiesen hast? – Dann wird die zugewiesene Kategorie natürlich auch explizit mit ausgegeben … (das würde auch erklären, warum du bei deinen anfänglichen Versuchen die Parent-Kategorie sozusagen gedoppelt hattest.

    Wenn du jetzt einen vernünftigen Grund nennen kannst, warum deinen Beiträgen die Oberkategorie (Parent-Kategorie) explizit zugewiesen sein muss und es nicht genügt, dass die Beiträge mittelbar auch in der übergeordneten Kategorie automatisch mit drin sind, musst du mit deinem Lösungsansatz aus Post #4 weitermachen. (Wobei mir der auch ein bisschen „verwurstelt“ vorkommt.)

    Warum the_category(); mit den Default-Werten funktioniert, habe ich eigentlich schon erklärt.
    Ich gebe zu, dass es in der Benennung etwas verwirrend sein kann mit dem „single“ und „multiple“. Vielleicht ist es besser zu verstehen, wenn du dir klar machst, dass $parents entweder leer sein kann (default), dann wird keine Parent-Kategorie ausgegeben. Oder es ist ein Wert gesetzt, dann wird es entweder „single“ – Parent-Kategorie wird angezeigt, um die Abhängigkeit darzustellen, aber nicht verlinkt – oder „multiple“ – Parent-Kategorie wird angezeigt und auch zusätzlich verlinkt – ausgegeben.

    Gruß
    helix

  • Ja für den Beitrag ist auch ebenfalls die parent kategory "körper und geist" zugewiesen, das habe ich gemacht das man den Beitrag auch unter der Kategorie Körper und Geist später findet falls man nur nach Körper und Geist sucht, oder ist dieser dann auch automatisch zu finden wenn ich diese nicht mitangebe im Beitrag?

    Vielen Dank übrigens für deine Hilfe und deine Geduld mit mir .. :D

    edit: würde ich Körper & Geist entfernen, hätte ich auch wieder das Problem das der overlay verschwindet über dem thumbnail^^

    Einmal editiert, zuletzt von frkyflwn (30. April 2016 um 20:26)

  • So zeige ich die Childcategorys bei mir an - hatte mal das gleiche Problem (War hart das zu finden)

    PHP
    <?php foreach((get_the_category()) as $childcat) {
    if (cat_is_ancestor_of(39, $childcat)) {  //Parents category id
    echo sprintf('<div class="wpb_button_mini-link"><a href="%s">%s</a></div>', get_category_link($childcat->term_id), apply_filters('get_term', $childcat->cat_name));
    }}?>

    Du musst nur die Parent Id angeben und dann werden alle dazugehörigen Childcategorys mit den entsprechenden Links angezeigt. Erklären kann ich dir den Code allerdings nicht, da ich ihn selbst nicht ganz versteh.

    Einmal editiert, zuletzt von ProGames (30. April 2016 um 20:57)

  • danke progames aber ich hab auch so einen komischen code mit dem ich nicht weiterkomme :D

    PHP
    [COLOR=#333333]<?php	foreach((get_the_category()) as $category) {[/COLOR]			if ($category->category_parent  != 0) {
    			echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr(strip_tags($category->name)) . '" ' . '>' . $category->name.'</a> ';
    			} [COLOR=#333333]    } [/COLOR]

    das problem ist halt 1. das ich die kategorien nicht durch ein komma trennen kann bzw weiß wie das geht und 2. das fonticon das vor den Kategorien steht wird immer angezeigt auch wenn keine kategorie mitangegeben ist :S

  • Also für Problem 1. könntest Du einfach mit ein wenig css Abhilfe schaffen

    Code
    .wpb_button_mini-link:last-child::after {
        content: '';
    }
    .wpb_button_mini-link::after {
        content: ',';
    }


    Das würde allerdings NUR mit meinem PHP Code gehen, wegen den Classes. Dein 2. Problem habe ich irgendwie nicht verstanden - bzw. habe ich dieses Problem nicht.

    Einmal editiert, zuletzt von ProGames (1. Mai 2016 um 00:36)

  • weißt du wie ich mit deinem code, mehrere IDs angeben kann für die parents? habs versucht durch komma trennung und/oder in ',' anzugeben aber funktioniert irgendwie nur wenn ich eine 1 ID angebe

  • also progames dank deinem tipp mit before und after klappt das wunderbar auf der singlepage für beitrage zum beispiel hier:

    http://www.web91.s67.goserver.host/2016/04/28/noc…-test-beispiel/

    ich habe jetzt aber genau den selben codeschnipsel in die Loop auf der Startseite eingebaut http://www.web91.s67.goserver.host/

    und er nimmt weder :first-of-type noch :last-child an nur das ',' das ich mit :after eingefügt habe, kann mir das einer erklären?!

    hier die codes css und php:

    PHP
    <?php          foreach((get_the_category()) as $category) {
                if ($category->category_parent  != 0) {
                echo '<div class="catlinkstag"><a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr(strip_tags($category->name)) . '" ' . '>' . $category->name.'</a></div> ';
                }
              }
         ?>

    css:

    die letzten 2 der css befehle nimmt er nicht auf der startseite aber auf der singlepage..

  • Du musst bei den CSS befehlen After und Before immer mit zwei :: arbeiten, daher geht es wohl nicht. Und wenn du mehrere Parents angeben willst, musst du für jeden Parent den Code nocheinmal darunter schreiben, habe ich bei mir auch so gelöst.

    Einmal editiert, zuletzt von ProGames (1. Mai 2016 um 12:28)

  • es macht zwar keinen Sinn mit :: zu arbeiten,weil es ja auf der singlepage seite reibungslos funktioniert, aber habs trotzdem mal versucht und es klappt trotzdem nicht..?
    weiß keiner warum das nicht geladen wird auf der startseite?

  • Nein, wissen tu ich es auch nicht. Aber was ich mal probieren würde:
    a) einheitliche Auszeichnung – entweder first-child / last-child oder first-of-type / last-of-type
    b) dabei würde ich first-of-type / last-of-type die Definition beim div lassen
    oder first-child / last-child die Definition dem Linkelement innerhalb .catlinkstag geben.

    Gruß
    helix

  • hat alles nicht geklappt, musste die a links direkt ansprechen und das hat den nachteil das der fonticon vor den subcategories mit dem first-child verlinkt ist, un sobald ich dann nen a:hover mach und die farbe änder, ändert sich dieser mit

Jetzt mitmachen!

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