Kategorien in Beitragsseiten ausschließen

  • Hallo alle zusammen,
    seid einigen Tagen schlage ich mich mit folgendem Problem herum:

    Ich habe folgende Kategorie-Struktur:
    Hauptkategorien:
    - Aktuelles
    - Familie & Soziales

    Die Kategorie "Familie & Soziales" enthält u.a. die Kategorie:
    - Bildung

    Diese enthält u.a. die Kategorien
    - Kitas
    - Büchereien

    D.h. meine Struktur sieht wie folgt aus

    - Familie & Soziales
    -- Bildung
    --- Kitas
    --- Büchereien

    Nun zu meinem Problem:
    Ich möchte die Beiträge aus den jeweiligen Unterkategorien ausschließen.
    D.h. wenn ich die Kategorie Familie & Soziales anklicke, möchte ich die Beiträge aus den darunterliegenden Kategorien (Bildung, Kitas, Büchereien) nicht angezeigt bekommen;
    wenn ich die Kategorie Bildung anklicke, möchte ich die Beiträge aus den darunterliegenden Kategorien (Kitas, Büchereien) nicht angezeigt bekommen.

    Im Internet habe ich dazu folgenden Code gefunden:

    function eb_filter_child_cats($query) {
    ...
    $query->set( 'category__not_in', array_merge( $array_output ) );
    return $query;
    }
    add_filter( 'pre_get_posts', 'eb_filter_child_cats' );


    Normalerweise sollte dies mit dem o.g. Code klappen, aber leider funktioniert es nicht.
    Hat jemand eine Idee, warum das so ist - oder vielleicht auch eine ganz andere Idee?
    Darüber würde ich mich sehr freuen. :)

    Es gibt keine dummen Fragen, es gibt nur dumme Antworten...
    http://u-portal.de/

    • 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

  • versuchs mal mit dem angepassten


    Code
    function eb_filter_child_cats($query) {
        if ($query->is_main_query() && !is_admin() && $query->is_category()) {
            $query->set('category__not_in', $array_output);
        }
        return $query;
    }
    add_filter('pre_get_posts', 'eb_filter_child_cats');
  • versuchs mal mit dem angepassten


    Code
    function eb_filter_child_cats($query) {
        if ($query->is_main_query() && !is_admin() && $query->is_category()) {
            $query->set('category__not_in', $array_output);
        }
        return $query;
    }
    add_filter('pre_get_posts', 'eb_filter_child_cats');

    Zunächst einmal vielen Dank für deinen hilfreichen Beitrag. :)

    statt:

    Code
    $query->set( 'category__not_in', array_merge( $array_output ) );


    muss es wie folgt heißen:

    Code
    $query->set('category__not_in', $array_output);

    Eine Frage hätte ich noch zu deinem Code:
    Was bedeutet/macht/gibt die von dir genannte Funktion $query->is_main_query() (zurück)?
    Vielen Dank schon mal im Voraus für deine Infos. :)

    Es gibt keine dummen Fragen, es gibt nur dumme Antworten...
    http://u-portal.de/


  • Der Rückgabewert ist False oder True.
    Aber wofür die Funktion "$query->is_main_query()" tatsächlich gut, sinnvoll oder sogar notwendig ist, dass konnte ich mir auch aus den Beispielen nicht erlesen.
    Vielleicht mag ja jemand von euch dies hier näher erläutern? Ich (und vielleicht auch einige andere) würde mich sehr darüber freuen. :-)

    Es gibt keine dummen Fragen, es gibt nur dumme Antworten...
    http://u-portal.de/

  • das ist abfrage des aktuellen Aufrufes im diesen fall welche kategorie.
    Sonst könnte nicht aktuelle ausgeben werden

    wenn dir der code nicht passt, kein problem ;)


    Vielen Dank für die Info.
    Und:
    Der code passt mir schon, aber ich verstehe ganz gerne den Code, den ich selbst verwende. :-)

    Es gibt keine dummen Fragen, es gibt nur dumme Antworten...
    http://u-portal.de/

Jetzt mitmachen!

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