Zurück   WordPress Deutschland Forum > Support > Konfiguration

Antwort
 
Themen-Optionen Ansicht
Alt 27.05.2008, 12:56   #1 (permalink)
PostRank: 8
 
Registriert seit: 31.03.2006
Beiträge: 877
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-Code:
# 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-Code:
<?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:
PHP-Code:
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
__________________
http://v-portal.org und http://u-portal.de

Geändert von redcat63 (27.05.2008 um 13:00 Uhr).
redcat63 ist offline   Mit Zitat antworten
Alt 27.05.2008, 18:01   #2 (permalink)
PostRank: 10
 
Benutzerbild von Jeriko
 
Registriert seit: 06.09.2005
Ort: Mannheim
Beiträge: 1.598
PHP-Code:
<?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 One - der da wo ins Internet schreibt
Jeriko ist offline   Mit Zitat antworten
Alt 27.05.2008, 19:07   #3 (permalink)
PostRank: 8
 
Registriert seit: 31.03.2006
Beiträge: 877
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-Code:
WarningCannot modify header information headers already sent by (output started at /mnt/web1/53/17/5481317/htdocs/wp-content/themes/default/functions.php:10in /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
__________________
http://v-portal.org und http://u-portal.de
redcat63 ist offline   Mit Zitat antworten
Alt 27.05.2008, 21:39   #4 (permalink)
PostRank: 10
 
Benutzerbild von Jeriko
 
Registriert seit: 06.09.2005
Ort: Mannheim
Beiträge: 1.598
Da sind halt irgendwo noch Leerzeichen und/oder Leerzeilen vor <?php und/oder nach ?>, die da nicht sein dürfen.

Gruß Jeriko
__________________
Jeriko One - der da wo ins Internet schreibt
Jeriko ist offline   Mit Zitat antworten
Alt 28.05.2008, 09:06   #5 (permalink)
PostRank: 8
 
Registriert seit: 31.03.2006
Beiträge: 877
Zitat:
Zitat von Jeriko Beitrag anzeigen
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:
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-Code:
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:
PHP-Code:
add_filter('posts_where','eb_feed_cat_where');

function 
eb_feed_cat_where($where) {
    global 
$wpdb;
    if( 
is_feed()) {
        
$arr_where1 explode("term_taxonomy.term_id IN ("$where);
        
$arr_where2 explode(")"$arr_where1[1]);
        
$string=str_replace("'84', ","",$arr_where2[0]);
         
$string=str_replace("'84', ","",$string);
         
$string=str_replace("'84'","",$string);
        
$string=str_replace("'5', ","",$string);
         
$string=str_replace("'5', ","",$string);
         
$string=str_replace("'5'","",$string);
        
$where=$arr_where1[0].'term_taxonomy.term_id IN ('.$string.')'.$arr_where2[1].') ';
          return 
$where;
    }
    return 
$where;

(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
__________________
http://v-portal.org und http://u-portal.de

Geändert von redcat63 (28.05.2008 um 09:45 Uhr). Grund: Änderung 1. Funktion, weil doppelt gemoppelt
redcat63 ist offline   Mit Zitat antworten
Alt 28.05.2008, 16:44   #6 (permalink)
PostRank: 4
 
Registriert seit: 23.01.2007
Ort: Erlangen
Beiträge: 205
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
cywhale ist offline   Mit Zitat antworten
Alt 29.05.2008, 14:01   #7 (permalink)
PostRank: 8
 
Registriert seit: 31.03.2006
Beiträge: 877
Zitat:
Zitat von cywhale Beitrag anzeigen
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.

VG Elke
__________________
http://v-portal.org und http://u-portal.de
redcat63 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:31 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 | Impressum | Ein Inpsyde.com Projekt