it-swarm.com.de

Wie kann ich Kategorien aus aktuellen Beiträgen, aktuellen Kommentaren und Kategorie-Widgets ausschließen?

Ich benutze die Balgfunktion (dank @helgatheviking!), Um Kategorien auszuschließen aus der WordPress-Schleife. Es funktioniert sehr gut - Posts ausgewählter Kategorien werden von der Schleife auf der Blog-Hauptseite, von den Kategorienlisten und aus den Archiven ausgeschlossen, aber nicht von den letzten Posts und nicht von den letzten Kommentaren in der Seitenleiste. Wie kann die Wirkung dieses Codes auch auf sie ausgeweitet werden?

add_action('pre_get_posts', 'wpa_31553' );

function wpa_31553( $wp_query ) {

    //$wp_query is passed by reference.  we don't need to return anything. whatever changes made inside this function will automatically effect the global variable

    $excluded = array(272);  //made it an array in case you need to exclude more than one

    // only exclude on the front end
    if( !is_admin() ) {
        set_query_var('category__not_in', $excluded);
        //which is merely the more elegant way to write:
        //$wp_query->set('category__not_in', $excluded);
    }
}

UPDATE: Eine kleine Klarstellung, die ausgeschlossenen Kategorien sind auch im Kategorien-Widget nicht verschwunden. Alle Beiträge aus diesen Kategorien sind einfach verschwunden, wenn ich sie mit einem Mausklick öffne. Ich möchte, dass sie auch aus dem Widget "Kategorien" verschwinden.

1
Iurie Malai

Ich habe meine ausgewählten Kategorien ausgeschlossen von überall mit dem Advanced Category Excluder (ACE) -Plugin, außer vom Categories-Widget - hier half der @ Brad Dalton-Code. ACE hat ein eigenes Widget für aktuelle Kommentare, das ausgeschlossene Kategorien verbirgt. Auf der 404-Seite gab es jedoch ein kleines Problem, bei dem dieses Widget weiterhin ausgeschlossene Kategorien mit Kommentaren anzeigt Ich habe es (die 404-Seite) mit dem 404 auf die Homepage meiner Site umgeleitet, um das -Plugin zu starten.

Vielen Dank für Ihre Hilfe!

UPDATE

Das Plugin Advanced Category Excluder bietet keine Option zum Auswählen, für welche Benutzerrollen bestimmte Kategorien ausgeschlossen werden. Daher habe ich es deaktiviert und auch das Widget "Zuletzt verwendete Kommentare" deaktiviert, für das ich die erforderlichen Kategorien derzeit nicht ausschließen kann. Zusammenfassend war die einzige Lösung die @ helgatheviking- und @ Brad Dalton-Funktion.

0
Iurie Malai

Der ursprüngliche Autor hat nicht ganz recht damit, "was nur die elegantere Art zu schreiben ist".

set_query_var() überschreibt immer die main Abfrage, wenn Sie tatsächlich verwenden:

$wp_query->set( 'category__not_in', $excluded );

... es funktioniert für jede Instanz von query_posts(), z. B. das Widget für kürzlich veröffentlichte Beiträge.

3
TheDeadMedic

Per @TheDeadMedic habe ich meinen Code angepasst. Hoffentlich funktioniert es jetzt bei allen Abfragen, die keine Administratoren sind.

add_action('pre_get_posts', 'wpa_136017' );

function wpa_136017( $wp_query ) {

    //$wp_query is passed by reference.  we don't need to return anything. whatever changes made inside this function will automatically effect the global variable

    $excluded = array(272);  //made it an array in case you need to exclude more than one

    // only exclude on the front end
    if( !is_admin() ) {
        $wp_query->set('category__not_in', $excluded);
    }
}
2
helgatheviking

Dies ist, was ich verwenden würde, um Kategorien aus dem Kategorien-Widget auszuschließen

function widget_categories_args_filter( $cat_args ) {

$cat_args['exclude'] = array(1,2,3);

return $cat_args;
}

add_filter( 'widget_categories_args', 'widget_categories_args_filter', 10, 1 );

Es gibt KEINE Filter zum Ausschließen von Kategorien aus den Widgets für kürzlich veröffentlichte Beiträge oder Kommentare. Sie können das Widget mit dieser Lösung als Leitfaden neu erstellen. http://wordpress.org/support/topic/recent-posts-widget-with-category-exclude

1
Brad Dalton