Posts aus Category XY nur in Category XY anzeigen

  • Hallo Allerseits,
    ich möchte das die Post einer bestimmten Kategorie nur in dieser Kategorie und nicht in den darüber liegenden angezeigt werden - und das am besten ohne Plugins.

    Ich hab jetzt schon einiges gelesen zu der Frage wie man Posts aus einer bestimmten kategorie von der Startseite ausnimmt (per exclude und if_is_home) aber hier ist es etwas komplizierter.

    Die Posts aus dieser Kategorie...
    http://www.axellauer.de/fotostudio/fotoblog/bild-des-tages/
    sollen nicht hier erscheinen...
    http://www.axellauer.de/fotostudio/fotoblog/

    Unsere category besteht aus ID-basierten Conditions wie zum Beispiel diesen:

    PHP
    <?php if (is_category(array(1,3,54,9,15,21,22,23,24,16,17,18,19,20,26,27,28,25,29,30,31,1841))) {
        include ('cat-gal.php');
    } elseif (is_category(5050)) {
        include ('cat-tfp.php');

    Auch unsere Loop ist etwas länger weshalb ich nicht so recht weiss wo und wie ich hier eingreifen soll.
    Ich vermute mal das die Änderungen irgendwo in diesem Abschnitt erfolgen müssen, weiss aber nicht wo noch wie..

    Kann uns jemand weiter helfen?
    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

  • Hi Axel,

    wenn ich mich nicht irre könntest du das Problem klären, indem du keine Unterkategorien benutzt. Wenn es nur Hauptkategorien gibt, erspart man sich das Trennen per Code.

    Solltest du Bedenken wegen des Menüs haben: Hier kannst du über das WordPress-Backend und die Menü-Funktion die jeweiligen Kategorien individuell sortieren.

    Hilft dir das weiter?

    Gruß,
    HerrMittwald

  • ERGÄNZUNG

    Ich habs jetzt mal damit probiert dieses in die functions zu schreiben:

    PHP
    function exclude_category($query) {
    if ( $query->is_category( '11' )  {
    $query->set(‘cat’, ‘-6583‘);
    }
    return $query;
    }
    add_filter(‘pre_get_posts’, ‘exclude_category’);


    ID 11 ist die Hauptrubrik des Blogs (oberste Ebene)
    ID 6583 ist die Rubrik deren Posts ausgeschlossen werden sollen.

    Allerdings zerhaupt es mir die komplette Website....

  • hi bydlo


    PHP
    function exclude_category($query) {
    if( $query->is_main_query() && !is_admin() && $query->is_category('11') ) {
            $query->set( 'cat', '-6583 );
    ....usw


    wenn du das so rausnimmst, und es dann das Layout auch noch zerschießt, dann richte das Layout, die Funktion ist so sicher richtig

  • Hallo Monika,
    danke für deine Hilfe, aber leider funktioniert es immer noch nicht (und es liegt nicht an dem fehlenden Hochkomma in deinem Code).

    Fragen:
    1: Das muss in die functions.php, oder?
    2: Ist es egal an welcher Position (oben, unten mitte)? (Natürlich nicht mitten in eine andere Funktion oder so, das versteht sich von selbst)

    Ergebnis:
    Es ist nicht so das es das Layout zerschiesst.
    Das Ergebnis sind 729 URLs ohne Output - leere weissen Seiten - nichtmal Quelltext.

    Würde es helfen wenn ich hier mal den Inhalt der functions.php posten würde?

    Gruss axel

  • Ha, zumindest sind die "leeren Seiten" weg.
    Hatte wohl irgendwo ein falsches Hochkomma.

    Allerdings funktioniert es immer noch nicht - das Ergebnis ist wie vorher.
    Die Posts aus der Unterrubrik werden immer noch in der darüberliegenden Hauptrubrik angezeigt

  • Ich muss den Thread leider nochmal hochschieben da ich einfach nicht weiterkomme - bin mit meinen Latein am Ende.

    @ Heilige Monika aka Schutzpatronin der PHP-DAUs
    Hab Gnade! :-)

    ja das nutzt ja nichts :-)
    das funktioniert bei mir seit "ewigst und drei Tage"
    es darf allerdings jeder Artikel auch nur in einer Kategorie drin sein ..
    ist das so?

    kontrolliere es zig mal

    gibts ein Plugin, das da wo eingreift...

    gib mal in der wp-config.php define debug auf true

    dann schildere die Fehlermeldungen ....

  • OK, dann fangen wir mal mit dem einfachsten an.

    Fehlermeldung:
    Parse error: syntax error, unexpected '{' in /var/www/virtual/lauer/html/wp-content/themes/mazine/functions.php on line 3

    Die functions sah zu diesem zeitpunkt so aus:

    ......

    2: Die Posts die ausgeschlossen werden sollen befinden sich nur in einer Kategorie.
    Posts anderer Kategorien befinden sich teilweise in mehreren Kategorien.
    Frage: Darf sich kein Beitrag in mehreren Kategorien befinden oder dürfen sich nur jene Posts die ausgeschlossen werden sollen nicht in mehreren kategorien befinden.
    Deine Aussage war hier nicht ganz eindeutig

    geuss axel

  • Ich weiss nicht was an dem Code von Monika falsch war / ist und ich verstehe auch nicht ganz genau was folgender Code macht, aber er funktioniert

    PHP
    /** Exclude certain category from posts */
    add_action( 'pre_get_posts', 'be_exclude_category_from_blog' );
    function be_exclude_category_from_blog( $query ) {
    
    
        if( $query->is_main_query() && $query->is_category( '11' ) ) {
            $query->set( 'cat', '-6583' );
        }
    }

    Gruss axel

Jetzt mitmachen!

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