WordPress Feed beeinflussen

bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.

Kommentare

  
  1. ^Nicki^ sagt:

    Ein toller Beitrag, danke! Habe es gerade ausprobiert, funktioniert wunderbar! Gibt es eine Möglichkeit den Feed ohne Dein Plugin mit einem Copyright zu versehen? Ich nutze die Ausgabe der verkürzten Version, somit werden die Vorgaben des Plugin im Feed nicht mit ausgegeben.

    • @Nicki: Das Plugin kann auch die Ausgabe, wenn es sich um gekürzte Feeds handelt. Dazu musst du lediglich den Haken an der Checkbox "Short Feed" (Also attach on short version of the feed? ... ) setzen. Das kann man auch ohne Plugin machen, dazu muss man aber eine Funktion, quasi das Plugin in das Theme integrieren.

  2. ^Nicki^ sagt:

    oh da hab ich was übersehen... besten Dank!

  3. cywhale sagt:

    Sehr interessant, wusste noch nicht dass man die Feeds so leicht beeinflussen kann - das gibt Ideen für ganz neue Benutzerinteraktionsmöglichkeiten (was für ein Wort...). Danke.

  4. Blu Ray sagt:

    Sehr schön erklärt und leicht nachvollziehbar wenn man sich ein wenig mit der Materie auseinandergesetzt hat. Werde meinen Feed gleich mal umbauen.

  5. Hendrik sagt:

    Hallo Frank,
    sehr hilfreich, Du bist wirklich der WordPress-Profi! Kategorien includieren kannte ich aber excludieren finde ich um Einiges besser..Danke Dir!

    Bis dann

  6. Marc sagt:

    Preisfrage :-)

    Ich will die Funktion nutzen, sprich aus allen Feed die Kategorie 1234 ausschließen.
    Aber für genau diese Kategorie will ich auch den Feed http://example.de/feed?cat=1234 bereit stellen.
    Wie löse ich das? Denn die Funktion wird ja dann quasi global?

    Funktioniert sowas in dem Fall:

    if ($query->is_feed && !is_category('1234') {

    • @MArc: in dem du einen neuen Feed erstellst, die die untere Beispielfunktion. Du bietest quasi einen Feed ohne cat 1234 und einen Feed nur 1234 an. Im header verlinkst du beide Feeds und damit können dann auch diverse Browser beide Feeds aggregieren.

  7. Marc sagt:

    Hm ja... Aber momentan haben ja schon einige den "/feed/" abonniert, von daher würde ich ihn schon gerne mittels $query beschränken und gleichzeitig einen Feed haben, der genau diese ausgeschlossene Kategorie anbietet.

    Ich nehme an, meine oben genannte Code-Idee würde nicht funktionieren?

    • den bestehenden Feed kürzt du, in dem du die Kategorie entfernst und deine einzelne Kategorie gibst du für einen neuen Feed frei. Damit bleiben deine Abonnenten erhalten.

  8. Wolf Larsen sagt:

    Ich setze das Plugin extra-feed-links ein. Damit hat man schnell Feeds für Kategorien oder Tags. Danke für den Code, eine beliebige Kategorie wird nun ausgeschlossen. Ist es möglich, auf der Frontpage z.B. http://www.testseite/feed eine Kategorie auszuschließen, die aber bei http://www.testseite/tag/quatsch/feed wieder zuzulassen? Ich habe eine Kategorie ausgeschlossen, nie nicht so ins Schema meiner Seite passt, die soll auf der Frontpage nicht erscheinen, als Tag-Feed aber schon.

    Wolf

    • @Wolf: zum Verständnis, WordPress bietet immer zum Tag oder Kategorie einen Feed an, ohne Plugin. Die Feeds sind immer da, es sei denn man schaltet sie via Filter explizit ab. Ansonsten ist das Listen von Feeds im head des Blog eine Sache des Frontend, die im Theme eingebaut ist.

  9. Christian sagt:

    Hallo,
    super erklärt.
    Aber eine Frage hätte ich noch.
    Wenn man mehrere Autoren in einem Blog hat, gibt es da die Möglichkeit Artikel von verschiedenen Benutzern aus dem Feed auszuschliessen?

    Gruß
    Christi

    • @Christian: da sollte es ein Plugin geben, da man ja jedem Beitrag ein Flag mitgeben muss. Ich bin aber der Meinung, dass ich sowas schonmal gesehen habe.

  10. Christian sagt:

    Hallo,
    kann es sein, dass das Skript in Zusammenarbeit mit dem feedburner nicht funktioniert?
    Gruß
    Christian

  11. Christian sagt:

    na ja es geht auch anders mit dem feedburner. Wenn man bei den Einstellungen des feedburners als Original-Feed Adresse http://example.de/feed?cat=-23 übergibt, schluckt es auch der feedburner.
    Gruß
    Christian

  12. Crazy Girl sagt:

    Frank, ich würde nach einer Lösung suchen, einzelne Artikel aus dem Feed auszuschließen. Könnte das auf einem solchen ähnlichen Weg funktionieren?

  13. Crazy Girl sagt:

    Gehe ich dann richtig in der Annahme, dass es bei Artikeln so aussehen müsste?
    $query->set('p','-12,-13,-33');, also stat 'cat' einfach 'p'?

    • @Crazy Gilr: nein, das wird nix. Um es sauber zu machen, würde ich über den posts_where filter gehen; ein Beispiel:

      
      function fb_post_exclude($where, $wp_query) {
      	global $wpdb;
      	
      	if ( !$wp_query )
      		global $wp_query;
      	
      	if ($wp_query->is_feed) {
      		// exclude post with id 40 and 9
      		$where .= " AND $wpdb->posts.ID NOT IN (40, 9)";
      	}
      	
       	return $where;
      }
      add_filter( 'posts_where', 'fb_post_exclude', 1, 2 );
      

      Eventuell mache ich mache einen kleinen Post daraus, wenn es dazu nix gibt.

  14. Matthias sagt:

    Gibt es eine Möglichkeit das Aussehen der Links im Feed zu bearbeiten/anzupassen? Konkret schwebt mir so etwas vor, wie es bei Viper's Video Quicktags gehandhabt wird. Ist ein Video eingebettet, das im Feedreader nicht angezeigt werden kann, erscheint ein Link mit dem Hinweis "Hier klicken um das Video auf der Originalseite anzuschauen" oder so ähnlich.

    • @Matthias: es ist ein feed, ein XML Dokument und entspricht einem Format, welches keine Eigenschaften in der Optik nötig hat, da dies der Reader oder das importierende Tool übernimmt.

  15. Matthias sagt:

    Ja das mit der Optik ist klar, blöderweise habe mich mit "Aussehen bearbeiten" sehr missverständlich ausgedrückt. :-D
    Ich meinte eigentlich, ob man irgendwo festlegen kann, dass alle Textlinks umgeschrieben werden sollen!? Wenn das irgendwie für Videoobjekte geht, dann müsste es ja eigentlich auch für Links gehen, oder kommt das dann wieder darauf an, wie die jeweiligen Verweise/Objekte (Links, Videos) in den eigentlichen Blogbeitrag eingebettet sind?

    • @matthias: ginge schon, aber was willst du aus den Links machen, die sind einfach im content und das Element a ist dort korrekt und muss nicht via enclosure implementiert werden, was bei Video oder anderen Medien dieser Art Sinn macht.

  16. Crazy Girl sagt:

    @Frank: z.B. Links einer bestimmten Klasse im Feed eine Bildchen mitgeben (z.B. Werbungskennzeichnung). Über das Feedstyler Plugin mit entsprechender CSS geht das nicht, da Feeds ja kleine background-images nehmen. Pseudo Klasse content fällt im Falle Feed ja auch aus. Würde so was vielleicht via spezielle Links umschreiben gehen?

    • @Crazy Girl: du kannst schon das Bild mitgeben, dazu musst du aber den img-Tag implementieren, da CSS im Feed fehl am Platz ist; heißt aus dem a-Tag wird img a, so dass das Bild vor dem Link ist. Dies kann man erreichen, wenn man den Filter the_content anspricht und das Bild nur einlagert, wenn es sich um den Feed handelt. Die Frage ist, ist dies wirklich sinnvoll, wobei mir dein Bsp. einleuchtet.

  17. stefan sagt:

    Hallo Frank,
    ich würde gern per Eintrag in die functions.php die Kategorie 16 aus allen Formen und Erscheinungsweisen von Feeds ausschließen.
    Wie kann ich Nicht-PHPler das denn das machen? Ich kürze einfach die if-Abfrage raus, also ungefähr so?

    function fb_cat_exclude($query) {
    $query->set('cat','-12,-13,-33';
    }
    return $query;
    }

    add_filter('pre_get_posts','fb_cat_exclude');
    Danke!

  18. stefan sagt:

    Nein - das war natürlich noch ein bisschen schräg.
    Also eher so?

    function fb_cat_exclude($query) {
    $query->set('cat','-16';
    return $query;
    }

    add_filter('pre_get_posts','fb_cat_exclude');

    PS.: Für so Leute wie mich, die sich an ihre Sache erst herantasten müssen, wäre eine Editierfunktion für die eigenen Kommentare klasse. :) Grüße! Stefan

    • @Stefan: dazu muss nur eine Abfrage rein, ob es sich um den Feed handelt.

      
      function fb_cat_exclude_filter($query) {
          if ( !$query->is_admin && $query->is_feed) {
              $query->set( 'cat', '-16' ); // id of cat
          }
          return $query;
      }
      add_filter( 'pre_get_posts', 'fb_cat_exclude_filter' );
      
  19. Crazy Girl sagt:

    Hättest Du mal ein Beispiel für mich, wie ich so eine spezielle a class mit einem entsprechenden img im Feed versehe? Würde es gerne mal ausprobieren

  20. stefan sagt:

    toll, das hilft! Danke dir!!

  21. nico sagt:

    hallo frank, die von dir beschriebene lösung kategorien aus dem feed auszuschliessen hat bisher tadellos funktioniert. eben habe ich allerdings - zum ersten mal seit dezember - in der ausgeschlossenen kategorie gepostet und hatte den beitrag prompt im feed.
    hat sich da durch 3.1 irgendwas geändert?

  22. Heiko sagt:

    Hallo Frank, nutze eine ähnliche Lösung schon länger, jetzt habe ich den Fall das ich für eine ausgeschlossene Kategorie einen seperaten Feed benötige. Die Lösung domain.de/feed?cat=33 funktioniert natürlich nicht da auch hier die Artikel von der functions.php ausgeschlossen werden.

    Hast du ne Idee / einen Ansatz wie ich trotzdem an einen Feed für diese Kategorie komme?

    • @Heiko: jedes Archiv, also auch jede Kategorie haben einen Feed im Standard, du musst ihn nur abgreifen; wenn Permalinks aktiv sind, dann einfach /feed/ an die URL der Kategorie hängen.

  23. Heiko sagt:

    @Frank: Das war auch meine erste Idee! Aber der Feed für die entsprechende Kategorie enthält keine Artikel. Technisch auch logisch da der Filter in der functions.php diese ja entfernt.

    Meine nächste Idee war eine Bedingung, dass wenn explizit der Kategorie-Feed abgerufen wird, der Filter nicht ausgeführt wird. Meinst du in der Richtung könnte man was basteln, oder hast du eine andere Idee?

  24. Stefan sagt:

    Hallo Frank,
    dank deiner Anleitung konnte ich nun zwei verschiedene Feeds anbieten - prima Sache. Jetzt würde ich gern noch statische Seiten einschließen: In meinem Photovoltaiklexikon schreibe ich immer wieder statische Beiträge, die ich zugleich unter die Feed-Nachrichten mische. Mit dem Plugin RSS Includes Pages geht das - aber wenn ich einzelne, besondere Seiten nun in meinen zweiten Feed mischen will - da stoße ich als Nicht-PHPler an meine Grenzen. Hast du vielleicht eine Idee?
    Danke dir!!

    • @Stefan: dazu musst du eh weiter erweitern, da du ja ein Flag an den ausgewählten Seiten mitgeben musst, so dass sie in den Feed kommen.
      ich würde vermutlich eher einen Beitrag schreiben und auf den Inhalt der Page hinweisen, damit erziehlst du mehr Leser und dafür sind Posts ja auch da. Pages sind eben statischer natur und wenig für den Feed geeignet.

  25. Stefan sagt:

    Danke dir für die rasche Antwort; und - tja, schade ... einerseits hast du natürlich Recht. Aber andererseits sollte die reine Lehre ja nur eine Stütze sein, kein Korsett ...
    Ich gucke mal, ob ich eine Lösung finde. Wahrscheinlich über benutzerdefinierte Felder oder so. Mal sehen. Jedenfalls, danke dir erstmal!

  26. Heiko sagt:

    Ich suche eine Möglichkeit alle passwort-geschützten Artikel aus dem Feed auszuschließen. Leider hat Google dazu keine Antworten, hat hier vielleicht jemand eine Idee?

  27. Heiko sagt:

    @Frank: Ahh, pre_get_posts. Danke, dass hatte ich gesucht. Seltsam das ich das nicht über die Google-Suche gefunden habe.

    Hab es vorerst darüber gelöst, dass passwort-geschütze Artikel in eine eigene Kategorie kamen und ich die Kategorie ausgeschlossen habe, aber über den Weg über eine eigene Funktion wäre es deutlich eleganter.

    DANKE

© 2014, since 2005 bueltge.de [by:ltge.de] · Theme is built by ThemeShift