Kategorie(n) aus Feeds ausschließen

  • Hallo alle zusammen,

    seit einigen Stunden suche ich sowohl im Netz als auch hier im Forum nach der Auflösung meines Problems. Aber bislang bin ich nicht wirklich fündig geworden.

    Deswegen wage ich es nun ein eigenes Thema zu eröffnen. ;-)

    Mein Problem:
    ich möchte/muss aus den Feeds eine Kategorie ausschließen. Dies gilt sowohl für die Suchmaschinen als auch für die Abonnenten der Feeds.

    Die Suchmaschinen habe ich mit Hilfe der robots.txt und der Abfrage im Header mit Hilfe des Meta-Tags ausgeschlossen. M. E. müsste das ausreichen:
    robots.txt:

    PHP
    # robots.txt für meine-domain.de
    # Diese Webcrawler schließe ich aus
    # Diese Verzeichnisse/Dateien sollen nicht durchsucht werden
    User-agent: *
    Disallow: /rss/
    Disallow: /feed/
    Disallow: /atom/

    header.php:

    PHP
    <?php if (is_category('redaktion')) {
    echo '<meta name="robots" content="noindex,nofollow" />';
    }
    else {   
    echo '<meta name="robots" content="index, follow" />';
    }
    ?>

    Den Link im Menü habe ich ebenfalls geändert.
    Soweit so gut.

    Wenn ich nun aber in der Adresszeile des Browsers die Domainadresse (Beispiel: http://www.meine-domain.de/feed

    PHP
    Meine-domain.de/feed/

    http://www.meine-domain.de/feed
    eingebe, dann spuckt er mir natürlich alle, also auch die der auszuschließenden Kategorie aus.
    Wie verhindere ich dies?
    Kann ich das per WP bzw. PHP automatisch korrigieren? Oder muss oder kann man dafür die Datei .htaccess-Datei nehmen, in der man den Link umleitet? Wenn ja, wie müsste dieser Befehl aussehen?
    (Diese Möglichkeit wäre für mich allerdings nur die 2. Wahl, aber was muss, das muss. ;-))
    Oder gibt es bereits eine viel elegantere Möglichkeit?

    Inwiefern muss ich eigentlich die Feeds der Kommentare berücksichtigen?

    Über Eure Hilfe wäre ich sehr dankbar.

    Zum Schluss:
    Gibt es eigentlich leicht verständliche Infos und Beispiele zu RSS und WP?

    VG Elke

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

    Einmal editiert, zuletzt von redcat63 (27. Mai 2008 um 13:00)

    • 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

  • PHP
    <?php function filter_category() {
    	global $wp_query;
    	
    	if(is_feed()) :
    		$wp_query->set('category__not_in',array(1));
    	endif;
    }
    
    
    add_action('pre_get_posts','filter_category'); ?>

    Das in die functions.php in deinem Theme-Ordner einfügen (ggf. neu anlegen falls noch nicht vorhanden) und die 1 mit der ID der entsprechenden Kategorie tauschen, dann wird sie auch nicht mehr im Feed angezeigt.

    Gruß Jeriko

    Jeriko - Design, Style, Photographie

  • Hallo Jeriko,

    vielen Dank für Deine Hilfe.

    Leider hat es noch nicht geklappt, d.h. bei der Version WP 2.5.1 kommt folgende Fehlermeldung, wenn man die Feedseite aufruft:

    PHP
    Warning: Cannot modify header information - headers already sent by (output started at /mnt/web1/53/17/5481317/htdocs/wp-content/themes/default/functions.php:10) in /mnt/web1/53/17/5481317/htdocs/wp-includes/feed-rss2.php on line 8
    http://www.meine-domain.de Computer-Seminare-Webdesign Tue, 27 May 2008 12:58:19 +0000 en http://www.meine-domain.de/index.php/2008/05/25/wordpress-weblog-zum-ueben/ 
    http://www.meine-domain.de/index.php/2008/05/25/wordpress-weblog-zum-ueben/#comments Sun, 25 May 2008 15:33:01 +0000 Vorname Nachname 
    http://www.meine-domain.de/?p=109 http://www.meine-domain.de/index.php/2008/05/25/wordpress-weblog-zum-ueben/feed/

    Wenn ich es mit einer älteren Version (ich glaube 2.2.3) versuche, dann kommt eine andere Meldung (bei den Feeds) und der gesamte Blog ist nicht mehr erreichbar, d.h. der Bildschirm bleibt weiß.

    Ich habe die Funktion sowohl in der functions.php ausprobiert als auch das Ganze als Plugin versucht. Das Ergebnis war immer das Selbe.

    Weißt Du warum?

    Vielen Dank schon im Voraus für Deine/Eure Hilfe.
    Herzliche Grüße
    Elke

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

  • Da sind halt irgendwo noch Leerzeichen und/oder Leerzeilen vor <?php und/oder nach ?>, die da nicht sein dürfen.

    Gruß Jeriko

    Jeriko - Design, Style, Photographie

  • Da sind halt irgendwo noch Leerzeichen und/oder Leerzeilen vor <?php und/oder nach ?>, die da nicht sein dürfen.

    Gruß Jeriko


    Leider nicht.

    Manchmal ist man einfach nur dämlich: :oops::oops::oops:
    Nachdem ich Deinen Beitrag gelesen habe, fiel mir ein, dass ich ja bereits ein Plugin, das u. a. Kategorien aus den Feeds ausschließt, geschrieben habe.
    Dabei habe ich allerdings einen Fehler entdeckt, den ich noch beheben muss.
    Für alle, die es interessiert:
    Für das Projekt, für das ich das brauche, habe ich erst einmal die folgende Lösung gefunden:

    PHP
    add_filter('pre_get_posts','eb_feed_cat_query');
    
    
    function eb_feed_cat_query($query) {
    if (is_feed()) {
       $query->set('cat', '-15' );
    }
    return $query;
    }

    Dies ist allerdings nur sinnvoll, wenn man wirklich nur eine Kategorie ausschließen will und noch nicht die Version 2.5 installiert hat.
    Wenn beides nicht zutrifft, muss man die Variable $where verändern.
    Ich habe das zunächst (auf die Schnelle) so gelöst:

    (Die Befehle str_replace kann man noch zusammenfassen, wobei die jeweils 1. Parameter in ein array geschrieben werden und die Funktion str_replace durch preg_replace erstezt werden muss.)

    Beide o.g. Funktionen werden übrigens in ein Plugin geschrieben und anschließend aktiviert.
    Soweit so gut.

    Allerdings habe ich trotzdem noch ein Problem:
    Wenn man in der Adresszeile des Browsers die Domainadresse der zu schützenden Kategorie eingibt und anschließend den String /feed dranhängt, dann zeigt er unabhängig, ob man angemeldet ist oder nicht, die Beiträge im Feed an.
    Wie kann ich dies verhindern?

    Weiß jemand Rat?
    Vielen Dank im Voraus für Eure Hilfe.

    VG Elke

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

    Einmal editiert, zuletzt von redcat63 (28. Mai 2008 um 09:45)

  • Nur ein Gedanke:
    - Mit is_feed() überprüfen ob ein Feed abgerufen ist
    - Mit is_category('deineID') auf die bewusste(n) Kategorie(n) überprüfen
    - Wenn ja - umleiten mit header('location...)

    Weiss nicht ob das funktionieren kann, v.a. ob is_category() in Feeds korrekt funktioniert, einen Versuch wäre es wert.

    Grüsse

  • Nur ein Gedanke:
    - Mit is_feed() überprüfen ob ein Feed abgerufen ist
    - Mit is_category('deineID') auf die bewusste(n) Kategorie(n) überprüfen
    - Wenn ja - umleiten mit header('location...)

    Weiss nicht ob das funktionieren kann, v.a. ob is_category() in Feeds korrekt funktioniert, einen Versuch wäre es wert.

    Grüsse

    Vielen Dank für Deine Anregungen.
    Die Funktion is_category hat leider nicht geklappt, dafür aber das Umleiten auf eine andere Seite. :-D

    VG Elke

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

  • Sers,

    der Post ist schon recht alt "im Sinne von Wordpress" - funktioniert´s auf diesem Wege auch mit + WP 2.9 ?

    Dankbar für Antwort.

    Gruß
    NML

    <?php if (have_read_this()) : while (have_read_this()) : read_it_again(); ?>

Jetzt mitmachen!

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