Kategorieseite bauen?

  • mhh, jetzt hab ich so lange gesucht und das erstemal keine antwort in unserm forum gefunden. merkwürdig :-)
    darum hier mal meine frage:

    wie baue ich ein kategorie template, das auch wirklich nur den Inhalt der gewählten kategorie anzeigt?

    eigentlich ganz einfach dachte ich, mmmh vielleicht mach ich auch nur einen denkfehler. also hier mal mein Kategoriebaum

    1. Hauptkategorie 1
      • Sub 1 zu Haupt 1
      • Sub 2 zu Haupt 1
    2. Hauptkategorie 2
    3. .....

    wenn ich nun den link zu Haupt 1 wähle, bekommen ich AUCH alle posts aus Sub 1 und Sub 2 gezeigt.
    genau das möchte ich aber nicht.
    ich möchte nur posts zu Haupt 1 sehen!
    hier mein Code:

    PHP
    while (have_posts()) : the_post(); {
     the_title();
    the_content();
    } // of while


    hat jemand eine idee meinen wunsch zu ermöglichen?

    danke & gruß

    • 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

  • nach längerem probieren und studium von codex hab ich das hier gefunden:

    http://wordpress.org/support/topic/…s=6#post-312711

    das war/ist die gleiche aufgabenstellung wie ich sie mir gestellt habe.

    lösung: (funzt aber nur als hack, ist somit mit weiteren releases von wp erstmal nicht kompatibel)

    1. sicherheitskopie des script classes.php anlegen
    2. die zeilen 465 bis 468 auskommentieren (also /* */ drumherum oder // zu beginn jeder zeile
    3. die zeile 498 ebenso

    das war es dann schon.

    G

  • Hallo Gerhard,

    nach kurzer in augenscheinnahme des refernzierten Codes, frage ich mich:

    Warum?

    Warum muß das mal wieder als Hack realisiert werden? Meine Meinung zu Hacks kann man auf meiner Seite nachlesen und dem aufmerksamen Studenten des in Frage kommenden Core-Files, wird doch die folgende Stelle nicht entgangen sein, oder? ;) :

    PHP
    // Apply filters on where and join prior to paging so that any
    // manipulations to them are reflected in the paging by day queries.
            $where = apply_filters('posts_where', $where);

    Auch wenn diese rd. 100 Zeilen hinter der letzten von Dir manipulieren Stelle steht, sollte man sich meiner Ansicht nach zunächst mal nach Standardmöglichkeiten das Selektionsergebnis zu manipulieren umsehen, bevor man zum, mE letzten Mittel, Hack greift ;)

    Mit obiger Stelle bietet sich die Möglichkeit daraus ein PlugIn zu machen, ohne den programmiertechnischen Laien mit ungenauen Zeilenangaben (was wenn eben dieser bereits an einer früheren Stelle mit einem Hack Zeilen eingefügt bzw. gelöscht hat?) die Datei ggf. verschrotten zu lassen! ;)

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • Zitat von Arno Simon

    Hallo Gerhard,
    ....
    nach kurzer in augenscheinnahme des refernzierten Codes, frage ich mich:

    Warum?
    ..............
    vG

    Arno


    Arno, gute frage,
    ich kann diese nur mit dem faktor zeit begründen. ich bin vollends bei dir:
    hacks sind gift, gift für jede zukunft.

    zu diesem thema sollte wirklich ein plug-in her. hat mich auch schon gepackt die sache damit. ich muss aber auch zeit finden dazu mir ein plugin dafür zu "hacken" ;)
    ein existentes plugin habe ich nicht gefunden.

    mal sehen, wenn ich die sache mit den hooks und so weiter zu plugin kapiere, baue vielleicht eins dazu.

    so long

  • Moin Gerhard,

    take this:

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • LJay,

    Zitat von "[url=http://forum.wordpress-deutschland.org/showthread.php?t=4947

    aus diesem Thread von LJay[/url]"] BTW @ Arno Simon
    http://forum.wordpress-deutschland.org/showpost.p...03&postcount=5

    Was genau bewirkt dieses PlugIn? Konnte es nicht eindeutig erkennen - leider.

    steht doch in der Description sowie diesem Thread ;)

    vG

    Arno

    PS.. Mein Englisch mag nicht das beste sein, aber bislang hat mich noch jeder verstanden ;)

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • Zitat von Arno Simon


    steht doch in der Description sowie diesem Thread ;)

    Zitat


    Filters Category's out of the Query-Where-Clause, not givven by the Category-Argument but added 'cause they are childs of the paged category

    Heisst für mich grob:
    Filtert Kat. raus, die nicht im Argument übergeben wurden ABER
    fügt sie hinzu, wenn sie ein "Kind" der angezeigten Kat. sind.

    Das ist für mich leider etwas unklar und verwirrend. WIe gesagt, mein englisch ist anscheinend nicht ausreichend dafür. ;)

  • Sollte eigentlich heißen:

    Filtert die Kategorien aus der Where-Clause, welche nicht durch das Seiten-Argumen bestimmt aber von WP hinzugefügt wurden, weil sie Unterkategorien der Seitenkategorien sind.

    Mit anderen Worten: WP zieht in der Beitragsübersicht einer Hauptkategorienseite immer die Beiträge der SubKategorien mit an. Durch das PlugIn werden die entsprechenden Teile der Where-Clause wieder entfernt, so das nur noch die Beiträge der aufgerufenen Kategorie angezeigt werden.

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • PS ich muß dazu sagen, dass ich das geschrieben habe , nachdem ich mehr als 24 Stunden auf war und davon mehr als 16 Stunden vor der Kiste verbracht habe ;)

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • hmmm die Funktion richtet bei mir keinerlei Veränderung an.
    Was mich sehr verwundert.

    Wenn ich den Code richtig interpretiere (wobei das RegExp mir zu hoch ist - war schon immer mein Fussnagel) wird die WHERE-Clausel nur verändert, wenn wir auf der Seite "single.php" oder im Archiv sind.

    Wenn ich aber im Menü (via wp_list_cats erstellt) auf eine Hauptkategorie klicke, lande ich auf einer seite die dann nicht berücksihtigt wird und somit werden wie bisher ALLE Beiträge der Kat. und SubKat angezeigt.

    Auch wenn ich die IF-Abfrage mal entferne, tut sich garkeine Veränderung bei mir auf?!
    Mach ich das was falsch? Versteh echt nur Bahnhof, wobei die Funktion auch in meinem aktuellen Fall recht nützlich wäre.

  • Hab die Funktion mal wie folgt geändert und nun bringt sie das gewünschte (jedenfalls für mich) Ergebnis.
    Wäre super wenn mir jemand sagt, ob das so konsequent ist oder ob da evtl. ne n Bug noch drin ist, der mir nur noch nicht aufgefallen ist.

    PHP
    function as_posts_where_filter4cats ($where) {
    	if( !(strpos($where, ' OR category_id') === false) ){
              $where = preg_replace('/(OR category_id = )([\d]*)/', '', $where);
    	}
        return $where;
    }
    
    
    add_filter('posts_where','as_posts_where_filter4cats');

    Bei mir hat die $where Clausel beim Aufruf der Hauptkategorie so ausgesehen;
    vorher:

    Code
    AND (category_nicename = 'news' OR category_id = 7 OR category_id = 9) AND post_date_gmt <= '2006-01-24 21:48:59' AND (post_status = "publish" OR post_author = 1 AND post_status != 'draft' AND post_status != 'static')


    nach der Bearbeitung durch die Funktion:

    Code
    AND (category_nicename = 'news' ) AND post_date_gmt <= '2006-01-24 21:48:59' AND (post_status = "publish" OR post_author = 1 AND post_status != 'draft' AND post_status != 'static')

    Die Kat. "news" war dabei die oberste Kat. und hat zwei SubCats. "7" und "9".
    Nun werden bei mir nur Posts aus der jeweilg selektierten Kat. angezeigt.

  • Die Funktion wurde von mir nicht auf Permalinks abgestimmt, sondern "nur" auf die numerische Variante.

    Da Deine Version augenscheinlich von den Permalinkeinstellungen abhängt - bei funktioniert es mit der Variante "/%postname%/%postid%/" nämlich nicht -, habe ich die Funktion so umgebaut, das aus einer Permalink-Selektion wieder eine ID-Selektion wird, was, wie ich hoffe und zunächst nicht selbst teste (Zeit), mit den meisten Permalinkeinstellungen funktionieren sollte:

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • ...aber dann wohl sehr intensiv?! Nunja, ich mach das eher nebenbei, denn Hauptsächlich hab ich garnichts mit WP zu tun...

    Nur leider ist Zeit für dermaßen aufwendige Recherchen und Programmierungen für ein noch unbekanntes WP sehr rar...

    Aber kommt Zeit, kommt Rat.

    Aktuelles Problem:

    LJay
    25. Januar 2006 um 10:47


    Aktuelles "Projekt":

    bohemian
    24. Januar 2006 um 20:14
  • hmmm da hab ich nun nen Bug gefunden.

    Beispiel bei dem es nen Bug gibt.
    Kategorien:
    "kat1" -> "news"

    "kat2" -> "news"

    ------

    Wie ich gerade feststellen musste, kann man im WP mehrere Kategorien anlegen, die den gleichen Namen und damit auch den gleichen "nicename" (Form) besitzen anlegen.

    Arbeitet man nun mit Permalinks, wo die nicenames in der URL ausgegeben werden, ist eine eindeutige Identifizierung der Kategorien nicht möglich!

    Wie kann ich also verhindern, das im Adminbereich eine Kategorie den gleichen nicename wie eine andere erhalten kann?

    Gibts dazu bereits PlugIns?

    Es soll dabei ohne direktes Eingreifen des Admins (Form/nicename) von Hand eindeutig gestalten, erfolgen.

    Beispiel:
    Kat1 hat 2 Subcats. "News" und "News".
    Lege ich die via Adminpanel an, besitzen bei den gleichen nicename.
    Bei der Ausgabe im Frontend gibt es nun 2 Links die beide
    domain.tld/kat1/news & domain.tld/kat1/news lauten.
    WP würde in diesem Fall immer die Kategorie auslesen, die beim query der Tabelle als erstes ausgeben wird. Es wäre also nicht möglich in die 2. zu switchen.

    Sicherlich wird es kaum vorkommen, das man zwei gleichnamige Kats in einer Hauptkat. hat, aber wenn wir z.B. News in zwei verschiedenen Hauptcats haben!

    Mit der Abfrage in deinem PlugIn

    PHP
    $cid = $wpdb->get_var("SELECT cat_ID FROM $wpdb->categories WHERE category_nicename = '$cat_nicename'");

    ...wird somit immer das erste zurückgegeben record benutzt.
    Habe ich in der DB-Tabelle aber mehr als eine Kat mit dem gleichen "nicename" verfälscht das die Ausgabe.

  • nein, das hat gar nichts mit meinem plugin zu tun, sondern mit den core-files in welchen die kategorien erstellt / geschrieben werden.....

    hier solltest du mal eine bugmeldung auf wordpress.org loswerden....

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • hmm...

    also es ist nun die Frage, wird durch das verändern der where clausel in deinem Plugin das nicht korrekt eindeutig ausgelesen oder ist das wirklich nen Bug und tritt auch ohne PlugIn mit der core function auf.

    Stellt sich ja die Frage, ob dieser "nicename" auch so gedacht ist, das er eindeutig ist?

Jetzt mitmachen!

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