global query greift zu tief

  • Um bestimmte Kategorien vom Index, dem Archiv und der Suche auszuschließen habe ich folgende Funktion verwendet in der functions.php:

    Code
    function filter_posts() {
      global $wp_query;
      if(is_home() || is_archive()  || is_search()) {
        $wp_query->set('category__not_in',array(1,30,37));
      }
    }
    add_action('pre_get_posts','filter_posts');



    Der Zweck ist damit erfüllt. Die entsprechenden Beiträge erscheinen nicht im Index, dem Archiv und der Suche.:)

    Allerdings erscheinen diese auch nicht wenn ich diese auf bestimmte Statische Seiten per Query aufrufe.:evil:

    Nehme ich obigen Code nur mit der Abfrage nach is_home() klappt das allerdings....Dann hab ich allerdings die Beiträge auch wieder im Archiv und der Suche.:confused:

    Was kann ich machen???:shock:

    Habe wp3.0.1 mit thematic als childtheme am laufen.

    liebe grüße
    thomas

    • 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

  • Denke da war ich schneller als.....:shock:

    Habe den Code abgeändert:



    Damit erreiche dann das Ziel bestimmte Kategorien vom Index, dem Archiv und der Suche angezeigt zu bekommen.
    Diesmal aber werden diese auch angezeigt wenn ich diese auf bestimmte Statische Seiten per Query aufrufe.:)

    Der Filter läuft also nur einmal - und zerlegt sich anschließend.
    Hoffe das hat nicht an irgend einer anderen Stelle noch Auswirkungen.
    grüße

    Einmal editiert, zuletzt von treibstoff (14. November 2010 um 01:34)

  • hast du es dann mal mit !is_tag() versucht?

    Oder du versucht einen normalen query_posts() in der header.php ohne eine Funktion:

    PHP
    <?php if ( is_home() || is_front_page() || is_archive() || is_search() ) {
    query_posts(array('category__not_in'=>array(1,30,37));
    } ?>

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • hallo maxe,

    ja danke...werde beide Möglichkeiten mal probieren...bin im Augenblick aber zu faul.:-?

    Da das is_Archive offenbar auch die Tag.php beeinflusst habe ich die Abfrage für is_archive rausgenommen und halt den Query direkt in die Archive.php mit

    Code
    $custom_loop = new WP_Query('cat=-1,-30,-37');
    if ( $custom_loop->have_posts() ) :
    usw.


    vor den loop reingeschrieben.

    Damit gibts dann keinen Konflikt mit den Tags....hm

    Na ja...das Ziel diese Abfragen zentral zu steuern hab ich da noch nicht ganz erreicht.

    aber !is_tag werd ich noch probieren.

    grüße

  • hallo max...
    na ja...habs grad doch probiert.

    In deinem Code fehlte 'ne Klammer:

    PHP
    [COLOR=#000000][FONT=Courier New][COLOR=#0000bb]<?php [/COLOR][COLOR=#007700]if ( [/COLOR][COLOR=#0000bb]is_home[/COLOR][COLOR=#007700]() [/COLOR][COLOR=#007700]|| [/COLOR][COLOR=#0000bb]is_archive[/COLOR][COLOR=#007700]() || [/COLOR][COLOR=#0000bb]is_search[/COLOR][/FONT][FONT=Courier New][COLOR=#007700]() ) {
    [/COLOR][COLOR=#0000bb]query_posts[/COLOR][COLOR=#007700](array([/COLOR][COLOR=#dd0000]'category__not_in'[/COLOR][COLOR=#007700]=>array([/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]30[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]37[/COLOR][/FONT][FONT=Courier New][COLOR=#007700])));
    } [/COLOR][COLOR=#0000bb]?>[/COLOR] [/FONT][/COLOR]



    Setze ich den in den Header gibt es in der Tat keine Probleme mit der TAG Abfrage.:razz:

    Allerdings schreibt das Archiv dann aus welchem Grund auch immer keinen Titel für das Archiv also z.B. kein "jährliches Archiv:2010" :evil:

    seltsam........

    Den Grund würd ich ja schon gerne wissen.:shock:

    Also zunächst alles wieder ab in den Zustand wie in letzter Post beschrieben.


    gruß

Jetzt mitmachen!

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