Beiträge nur in Unterkategorie anzeigen

  • guten Morgen,
    ich suche verzweifelt nach einer Lösung für:

    Hauptkategorie
    ---Unterkategorie

    Beiträge sollen, wenn sie in der Unterkategorie verlinkt werden nicht in der darüberliegenden hauptkategorie erscheinen.

    Habe auch schon die paar beiträge gelesen die es hierzu gibt aber da führt keiner zu einem Ergebnis.
    Ich kann mir aber andererseits nicht vorstellen das es hierzu keine Lösung geben sollte,oder ?

    Hat das schonmal jemand umgesetzt und Lust das mal zu posten?
    Gruss axel

    • 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

  • Habs erledigt.

    Und da die anderen Beiträge reichlich undurchsichtig sind hier mal eine Anleitung wie ich Sie verstanden hätte.

    1:Lege in Ruhe deine Kategorien an.
    2: Jetzt nehmen wir mal folgende Situaton an:

    Auto ( Hauptkategorie)
    ---BMW
    ---Benz
    ---VW
    Motorrad (Hauptkategorie)
    ---Kawa
    ---Yamaha
    ---Guzzi

    Weiter nehmen wir an das du Beiträge in den Unterkategorien Kawa,Yamaha & Guzzi geschrieben hast , diese aber nicht in der Hauptkategorie Motorräder angezeigt werden sollen.

    3:Gehe in dein Backend und finde heraus welche ID die Kategorie Motorräder hat.
    Falls du nicht weisst wie es geht ...fahre im Backend mit der Maus über den Link der Kategorie und schau nach unten links an deinen Bildschirmrand.
    Dort siehst du das Linkziel mit der ID am Ende.
    Als Beispiel nehmen wir mal die ID 5.
    4:Jetzt nimm die bereits vorhandene Datei category.php (oder wenn du die nicht hast dann die archive.php)
    5:Öffne sie
    6:Kopiere den kompletten Inhalt.
    7:Erstelle eine neue Datei & speichere sie als category-5.php dort wo auch deine category.php liegt.
    8: Nun innerhalb der category-5.php über diesen Code die Ausgabe unterbinden.

    PHP
    <?php while(have_posts()):the_post();?>
    <?php if ( !(in_category('11')) && !(in_category('10')) && !(in_category('12')) && !(in_category('13')) ) { ?>
    <div id="post-<?php the_ID();?>">

    Nun schau nach welche IDs die Unterkategorien Kawa,Yamaha & Guzzi haben und trage sie dort ein wo jetzt als Beispiel die 10,11,12 & 13 stehen.

    Und dieses Spiel machst du für jede Hauptkategorie in der du was ausschliessen möchtest

    Gruss
    (stolz wie Oskar das so ne PHP-Niete wie icke mal sowas zurückgeben konnte) axel

  • geht auch einfacher..

    Mich hat dieses Verhalten von Wordpress auch sehr genervt und da ich keine Lust hatte bei jedem Menüpunkt jedesmal eine Bedingung zu erstellen hab ich mir den Code angeschaut.

    Hier meine Lösung mit WordPress 2.6.2 DE-Edition:

    1. Methode funktioniert mit Permalinks im Standard-Modus:

    in der Datei wordpress\wp-includes\query.php in ~ Zeile 1040 steht folgende Anweisung:

    PHP
    if ( !empty($q['category__in']) ) {
        $join = " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) ";
        $whichcat .= " AND $wpdb->term_taxonomy.taxonomy = 'category' ";
        $include_cats = "'" . implode("', '", $q['category__in']) . "'";
        $whichcat .= " AND $wpdb->term_taxonomy.term_id IN ($include_cats) ";
    }

    Hier muß die Zuweisung (am besten auskommentieren):

    PHP
    $include_cats = "'" . implode("', '", $q['category__in']) . "'";

    in diese geändert werden.

    PHP
    $include_cats = "'" . $q['category__in'][0] . "'";

    2. Methode funktioniert mit Permalinks in allen anderen Modi:

    in der gleichen Datei ~Zeile 1086 steht dieser Code

    PHP
    $join = " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) ";
    $whichcat = " AND $wpdb->term_taxonomy.taxonomy = 'category' ";
    $in_cats = array($q['cat']);
    $in_cats = array_merge($in_cats, get_term_children($q['cat'], 'category'));
    $in_cats = "'" . implode("', '", $in_cats) . "'"; // <-- das muß geändert werden
    $whichcat .= "AND $wpdb->term_taxonomy.term_id IN ($in_cats)";
    $groupby = "{$wpdb->posts}.ID";

    hier muß diese Zeile

    PHP
    $in_cats = "'" . implode("', '", $in_cats) . "'";

    in das geändert werden

    PHP
    $in_cats = "'" . $in_cats[0] . "'";

    Das wars!!!

    Viel Spaß damit

    Einmal editiert, zuletzt von freshman17 (10. November 2008 um 10:23)

  • Zitat

    ist das eine Frage oder eine Antwort?


    Eine Antwort.

    An Coredateien sollte man sinnigerweise nicht herumschrauben, da so keine einfachen Upgrades mehr möglich sind. Es muss jedesmal geprüft werden, ob eigene Änderungen an Coredateien überschrieben werden.

    Zitat

    hier steht das das Update jedem selbst überlassen bzw. erst ab 2.7 in die Version implementiert wird


    Damit ist nicht gemeint, dass man keine Upgrades machen soll, sondern ob das Upgrade manuell oder über die automatische Upgradefunktion durchgeführt wird.

    Zitat

    Das Update kann mir gestohlen bleiben da ich alle meine WP-Versionen umgeschrieben habe


    Ja. Genau das ist das Problem, auf das ich dich - und andere die deinen Unsinn lesen - hinweisen will.

    Zitat

    die Schnittstelle offenlegen.


    WordPress bietet eine sehr feine Schnittselle an, die sogar dokumentiert ist:
    http://codex.wordpress.org/Plugin_API

  • Das Update bleibt jedem selbst überlassen bzw. erst ab 2.7 in die Version implementiert

    WordPress 2.7 Core Update - WordPress Deutschland Blog

    Im Grunde genommen kann mir es gestohlen bleiben da ich alle meine WP-Versionen umgeschrieben habe (leider muß ich WP benutzen).

    Außerdem wollte ich hier nicht diskutieren ob ein Update sinvoll ist oder nicht sondern eine weitere Lösung zeigen bzw. die Schnittstelle offenlegen.

    Wie es aussieht kannst du zu diesem Thema nichts konstruktives beitragen bzw. bist nur aus dein Beitragskonto zu erhöhen.

    so long..

Jetzt mitmachen!

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