WP – RSSImportTwo (Plugin)

Das Plugin RSSImport ist mittlerweile recht gefragt, der Artikel ist der meist gelesene auf meinem Blog und immer wieder bekomme ich Anfragen zwecks Anwendungen mit dem Import von XML-Daten bzw. RSS-NewsFeeds. Um die Last auf der Datenbank von WordPress möglichst gering zu halten, hatte ich vor geraumer Zeit einen Beitrag - Performance meiner Startseite - geschrieben, bei dem ich erläutere, wie man diverse Sachen aus WP in Seiten einlesen kann und damit die Performance von WP ein wenig verbessert. In diesem Artikel habe ich das Plugin RSSImport ein wenig verändert, mittlerweile gibt es auch das in einer neueren Version und ich möchte das Plugin hier ablegen, damit ich nicht immer Anfragen per Mail beantworten muss.

RSStoWP

Das Plugin RSSImport ist mittlerweile recht gefragt, der Artikel ist der meist gelesene auf meinem Blog und immer wieder bekomme ich Anfragen zwecks Anwendungen mit dem Import von XML-Daten bzw. RSS-NewsFeeds.

Um die Last auf der Datenbank von WordPress möglichst gering zu halten, hatte ich vor geraumer Zeit einen Beitrag - Performance meiner Startseite - geschrieben, bei dem ich erläutere, wie man diverse Sachen aus WP in Seiten einlesen kann und damit die Performance von WP ein wenig verbessert.
In diesem Artikel habe ich das Plugin RSSImport ein wenig verändert, mittlerweile gibt es auch das in einer neueren Version und ich möchte das Plugin hier ablegen, damit ich nicht immer Anfragen per Mail beantworten muss.

Anforderungen:

WP-RSSImportTwo arbeitet mit WP 1.5 und höher.

Um die Funktion des Plugins zu nutzen, ruft die Funktion mit folgendem Code auf. Dabei besteht die Möglichkeit die Anzahl der ausgegebenen Headlines und die Adresse zum RSSFeed fest zulegen. Weiterhin kann mit Hilfe von True oder False angegeben werden, ob nur Headlines ohne die Description oder mit Description dargestellt werden soll und ob der ausgegebene Text beschnitten werden soll, nach wieviel Zeichen.

Parameter der Funktion: (Anzahl der Einträge,“Adresse zum Feed“,true oder false für NUR headlines, true oder false für Titel kürzen, true oder false für Text kürzen, Zeichenanzahl für Text kürzen)


<?php RSSImportTwo(10,"https://bueltge.de/wp-rss2.php",true,false,true,200); ?>

Wenn ihr den Inhalt auf einer Seite von WordPress darstellen wollt, so benötigt ihr ein php-Plugin. Für die Verwendung von php-Code auf WP-Seiten empfehle ich das Plugin EXEC PHP von Soeren Weber.

Damit der content incl. HTML importiert wird, muss der Code ein wenig geändert werden.


// Edit here:
// For import with pure text
$desc  = $item['description'];
// For import with HTML
//$desc  = $item[content][encoded];

Die letzte Zeile des Codeteiles entkommentieren und Zeile 3 auskommentieren, also die beiden Variablendefinitionen ändern.

Das Plugin erzeugt eine div-Container mit der Klasse rssimporttwo, darüber kann das Format mittels CSS gestaltet werden.

Installation:

  1. Die Datei in rssimporttwo.php umbenennen und in euren Plugin-Ordner hochladen: /wp-content/plugins
  2. Aktiviert das Plugin in der WP-Admin-Oberfläche
  3. Fügt
    <?php RSSImportTwo(10,"https://bueltge.de/wp-rss2.php",true,false,true,200); ?> oder in eurer Template oder in eine statische Seite mit Hilfe eines php-Plugins

Download:



Ist die Arbeit nicht 1 Euro wert?
Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.
Möchtest du mehr oder anders spenden, so besuche meine Wunschliste.

Download als php-Datei: rssimporttwo.zip - 3 KByte

Historie:

  • V1.1 - Dank der Hinweise und der Änderungen von Thomas Fischer ist das Plugin zu einem wesentlich nutzerfreundlicherem Tool geworden. Nun lassen sich auf einfache Art und Weise mehrere RSS-NewsFeeds in die WordPress importieren und die Konfiguration sind einfacher zu händeln. Hier nochmal mein herzliches Dankeschön an Thomas.
  • V2.0 - verarbeitet deutsche Umlaute in den Headlines
  • V2.4 - kann jetzt Sonderzeichen und deutsche Umlaute verarbeiten, unabhängig vom Mimetyp des importierten Feeds
  • V2.5 - Bug behoben, Description wird nun auch mit deutschen Umaluten dargestellt, alle Sonderzeichen als Entity (html-Codiert) ausgeben
  • V2.9 - xhtml Fehler beseitigt, etc.
  • V3.2 - schlanker Code, neue Rouitne für Sonderzeichen UTF-8, HTML importierbar
  • V3.3 - neue Funktion für ISO-Codec, Datumsintegration
  • V3.3.1 - class Startseite in class rssimporttwo geändert

113 Comments

  1. Ich habe das PlugIn in meinen Blog eingebaut, es liest meine kleine handgeschriebene xml-Datei ein für die Neuigkeiten auf meiner statischen Homepage. Funktioniert super, vielen Dank 🙂

  2. Habe mich auch an dem Plugin versucht, auf den Blogs die es verwenden erfüllt es schließlich seinen Zweck, leider hab ich dabei aber ein Problem:

    Bei der Installation bin ich nach der Anleitung oben vorgegangen, hat eigentlich auch alles geklappt, jedoch gibt es da scheinbar ein Problem mit der Zeile "foreach ($rss->items as $item)" in der rssimporttwo.php
    Habe es selbst leider nicht geschafft den Fehler zu beheb, vielleicht kann mir hier jemand helfen.

    Der Feed sollte eigentlich in meiner sidebar.php erscheinen, dort ist jetzt eine entsprechende Fehlermeldung einsehbar.

    Viele Grüße
    Benni

  3. @Gabi: schöne Anwendung - Danke für das Lob.

    @ Benni: Für diesen zweck bietet sich das Origonal an - RSSImport. Die Verison "RSSImporttwo" ist für andere zwecke gedacht. In deinem Fall möchtest du ja den Feed einer anderen Site laden, vielleicht sogar nur die Überschriften, denn es steht ja im Sidebar.

    LG Frank

  4. Danke für die schnelle Hilfe,
    habe RSSImportTwo wieder entfernt und das Original installiert, danach dann entsprechend meine sidebar.php auch abgeändert. Die Fehlermeldung ist jedoch leider geblieben und verweist auch wieder auf den gleichen php-Befehl
    "foreach ()". Vielleicht liegt das Problem doch an etwas anderem, weil ds Plugin ja bei den anderen Nutzern funktioniert.
    Habe auch schon bei meinem Webhoster nachgeschaut ob der foreach-befehl abgeschaltet ist (wäre zwar absurd, aber man schaut trotzdem besser mal nach), was aber nicht der Fall ist.

    LG Benni

  5. Hallöle,

    ich habe gerade entdeckt, daß die Beschreibung der Funktion nicht ganz korrekt ist (bin da leicht verwirrt gewesen, als nicht-Coder 🙂

    Parameter der Funktion: (Anzahl der Einträge,“Adresse zum Feed“,true oder false für NUR headlines, true oder false für Text kürzen,Zeichenanzahl für Text kürzen)

    muß eigentlich heissen:
    Parameter der Funktion: (Anzahl der Einträge,“Adresse zum Feed“,true oder false für NUR headlines, true oder false für Titel kürzen, true oder false für Text kürzen,Zeichenanzahl für Text kürzen)

    Grüßle

    ts

    PS: Oder bin ich zu blöd? Will ich ja nicht ausschliessen.

  6. Hallo ts,
    herzlichen Dank für die Info - du bist nicht zu "blöd" ! habe es auch gleich geändert.
    Nochmal Danke und liebe Grüsse Frank.

  7. Da bin ich aber beruhigt; ich habs einfach nicht hinbekommen, aber habs dann doch noch lösen können.

    Leider ist die Darstellung nicht kompatibel zu dem verwendeten Theme, wobei ich mittlerweile glaube, daß das Theme eigentlich zu gar nichts richtig kompatibel ist.....

    Ich bastele dann mal weiter....

    Danke schön für das Plugin, es nimmt mir Arbeit ab, insbesondere, da ich erst seit ein paar Tagen mit WordPress experimentiere.

    ts

  8. @ultras71:
    Habe es bei mir getestet, folgeder Code - <?php RSSImport(3,"http://www.tebe.de/rss/tebenews.xml",false,false); ?> - geht ohne Probleme, kann es wieder nur auf die php-Version schieben.
    Gruss Frank

  9. Hi,
    ich habe es mit der neuen Version nochmal probiert. Leider kommt nach wie vor der gleiche Fehler:
    "Warning: Invalid argument supplied for foreach() in /usr/export/www/hosting/XXXXXXXX/Wordpress/wp-content/plugins/rssimport.php on line 31"

    Nach wie vor keine Ahnung woran das liegt, aber da sich ohost und funpic als Hosts sehr ähneln, kann es durchaus daran liegen.

  10. Hallo,

    seit einem Serverumzug läuft das Plugin nicht mehr. Der neue Sever rennt auf PHP 4.4.4.0; aber ich bekomme diesen foreach fehler:

    Warning: Invalid argument supplied for foreach() in /var/www/virtual/xxxxxx/htdocs/wp-content/plugins/rssimporttwo.php on line 36

    Was kann ich tun?

    PS: Das mit dem Download halte ich für verbesserungswürdig; es funktioniert einfach nicht richtig. Wenn ich auf den Link gehe mit der Maus, zeigt er mir eine phps Datei an. Mache ich "Ziel speichern unter", dann speichert er mir eine .html Datei. Die benenne ich um, aber dann sehe ich den kompletten Inhalt der Datei wenn ich meine Seite aufrufe.
    Warum nicht einfach die php Datei als .zip anbieten? Da wäre die Fehlerquote am geringsten. Btw, es gibt zuviele RSSImport Seiten, und ich weiß nie, auf welcher ich gerade bin. Geht es nur mir so?

    Vielleicht habe ich ja auch Tomaten auf den Augen, will ich nicht ausschliessen.

    Danke

    ts

  11. @ts: Plugins sollten immer vor einen Upgrade daktiviert werden, ansonsten ist dieses typische Problem in WP bekannt.
    Nochmal deaktivieren und sauber aktivieren. Sollte es am Server liegen, so holen wir die Daten aus der DB. Schreibe mir mal eine Mail, was du in deinem Fall damit machst. Denk mal, du holst deine letzten Beiträge - dafür habe ich ein anderes Plugin fertig, was die Daten direkt aus der DB holt.
    LG Frank
    ** Zip ist abgelegt und was meinst du aufl welchen Seiten? Das Plugin RSSimport gibt es nur einmal, aber hier geht es um RSSImportTwo.

  12. Hallo Frank,

    tut leider noch nicht. Ich möchte einfach nur den RSS Feed von einer anderen WordPressseite anzeigen.
    Weder die neue Version, noch eine De-/Reaktivierung, noch die (foreach((array) Änderung bei wp-settings half.

    Grüßle

    ts
    PS: Seit dem Serverumzug tun auch die Umlaute in den Beitragsüberschriften, den Kategorien etc. nicht mehr gescheit.... 🙁

    Ich verirre mich immer auf die RSSImport Seite, bis ich dann irgendwann merke, daß das die Falsche ist, dann hangele ich mich wieder zur Two durch... Vielleicht bin ich gerade generell ein bisschen durcheinander; nichts für ungut und Danke für die Hilfe.

  13. Ok, die Umlaute tun wieder, ich konnte sie einfach überschreiben... Aber diese foreach nummer bleibt, leider. 🙁

  14. @ts: Dann mal versuchen, nur einen Eintrag zu holen, denn dann liegt es in der Regel am Feed, der ein nicht lesbares Zeichen enthält.
    Um aber nur den Feed zu importieren, ist sicher RSSImport besser geeignet, ist aber vom Lesekonzept das gleiche.
    ** Du hast sicher beim Serverumzug die DB ex- bzw. importiert. Deshalb wird es Probleme mit den Umlauten geben. Ich kann dir gern ein Script geben, mit dem du in der DB alle Zeichen in UTf-8 wandelst, wenn du magst.
    LG Frank

  15. Gut, dann kannst du nun mit der Funktion arbeiten. Wenn du es in einem Beitrag oder einer Seite nutzen willst, so ebnötigst du ein php-Plugin, da dies standardmäßig in WP nicht geht.

  16. okay, habe dazu auch das PHP plugin installiert, welches du hier empfiehlst. jetzt möchte ich das ganze in der sidebar anzeigen lassen, aber irgendwie wird nichts angezeigt :-/! ich mache sicherlich etwas falsch, nur weiss ich nicht was! habe auch beide plugins natürlich aktiviert. und den code in die sidebar eingefügt, dort wo es angezeigt werden soll!

  17. Wenn du es in den Sidebar haben willst, dann geht es ohen php-Plugin, da du es im Template importieren musst. Hinterlege also die Funktion in die sitebar.php deines Themes. Achte darauf, dass der Feed, den du importierst valide ist, da ansonsten Magpie Probleme hat. Auf der Demo-Site bei mir findest du einige Beispiele. Wenn es da geht, dann kannst du ja mit diesen Adressen versuchen und dann deine Wunsch-Adresse editieren.
    LG Frank

  18. danke für deine geduld mit mir :-)! also ich habe mal das hier eingefügt:

    habe es mal mit dem RSS Import versucht damit geht bei mir auch nichts, auch mit anderen feeds, bzw. mit den Demo feeds von dir. mit RSS Two funktioniert es auch nicht, komischerweise!

  19. Hallo,

    auf dieser Seite http://www.arwisu.de/newsfeeds/ habe ich folgenden Code eingegeben:

    - Funktioniert:
    ...ImportTwo(10,"http://archivnachrichten.blogspot.com/rss.xml",true,false,true,200);...

    - Funktioniert nicht:
    ...ImportTwo(10,"http://archiv.twoday.net/index.rdf",true,false,true,200);...

    - Funktioniert nicht:
    ...ImportTwo(10,"https://bueltge.de/wp-rss2.php",true,false,true,200);...

    Ich verstehe nicht warum die erste Variante einwandfrei funktioniert, die anderen beiden aber nicht (siehe Link)? Das Problem kann doch nur an der Art der Feeds liegen, oder?

    Schöne Grüße und vielen Dank im Voraus!

    Posti

  20. @Posti: das Plugin basiert auf MagpieRSS, welches WP mitbringt. Sind die Feeds nciht valide, so kann es zu Problemen kommen. Setze die Anzahl der Artikel runter, meist ist es nur eine Zeichen in einem Artikel, vielleicht kannst du es so umgehen.
    LG Frank

  21. Hi, danke für das plugin. Habe es bei mir drin - allerdings gehen im eingebundenen text die zeilenumbrücke verloren. ich binde aber gedichte ein und bräuchte sie daher.

    woran liegts?

  22. ich habe versucht, einen gregarius-feed einzubinden - das funktioniert soweit auch, es werden aber unabhängig von den einstellungen immer nur die überschriften angezeigt.

    im xml habe ich gesehen, dass statt dem TAG <description> ein <content:encoded> den inhalt einschliesst... habe es trotzdem nicht hinbekommen...

  23. hab's doch noch geschafft 😉

    einfach $desc=$item[description] durch desc=$item[content][encoded] ersetzt

    warum nutzt du in deinem script eigentlich das oben definierte $desc weiter unten nicht mehr, sondern nimmt wieder $item['description']?

  24. ja, oben definierst du $desc über trim etc., aber unten nutzt du die variable (bis auf die überprüfung, ob sie einen inhalt <>"" hat) gar nicht mehr, sondern wieder $item['description']?

  25. Das ist richtig, liegt aber nur daran, dass es historisch gewachsen ist - von der kleinen Idee ... - dadurch wurde der Code nie bereinigt, einfach zu wenig Zeit.

  26. ok, dachte schon, ich wär zu blöd, um es zu kapieren 😉
    noch 'ne dumme frage: gibt es eine art cache dabei? bis der aktuelle feed angezeigt wird, dauert es nämlich immer ein paar stunden (z.B. jetzt sind 13 neue einträge im feed die im blog aber noch nicht angezeigt werden)

  27. ah ja, hab's schon
    bei der wp-config.php einfach define('MAGPIE_CACHE_ON',false); ergänzen, dann klappts auch mit dem nachbarn ohne verzögerung.

  28. Ja, die Werte werden eigentlcih in der /wp-includes/rss.php definiert, obei WP abfragt, ob es schon definiert wurde, deshalb geht der Eintrag in der wp-config. (Standard ist eine Stunde)
    Aber entscheidend ist - es geht.
    LG Frank

  29. Hi Frank, ich hab mein Problem aus #38 mit dem Miniblog-plugin gelöst. thx. Woran es lag das jegliche html tags im eingebundenen feed fehlten konnte ich nicht raubekommen.

  30. Per Parameter übergeben, bitte die Doku oben beachten.
    Wert steht für die jeweiligen Zeichen.

    RSSImportTwo(10,"https://bueltge.de/wp-rss2.php",false,false,true,200);
    
  31. Hi,

    This is a very nifty plugin, thanks. I have added it to my template and I'm playing around with it now but my php knowledge is limited to deleting at random and hoping for the best:)

    I was wondering 2 things and maybe you can help me out.

    1. which lines should I delete to just have just the titles of the posts displayed. I'm actually trying to take away features, sorry:)?
    2. Can I truncate the number of characters of the titles of the posts?

    Thanks a lot.

  32. Folgender Feed funktioniert bei mir leider nicht:

    , habe auch schon probiert die Titelanzahl weiter runterzusetzen, wie weiter oben vorgeschlagen. Leider auch ohne Ergebnis. Noch irgendwelche Ideen?

  33. @Gemme: charachters of post is in two last parameters: true, 200 and the first parameter false for "only headlines"
    Headlines of the item in full length: paramter 2: false

    Example:
    <?php RSSImportTwo(10,"https://bueltge.de/wp-rss2.php",false,false,true,200); ?>

  34. @DonNemesis: der Feed ist valide, aber Magpie findet die Schlüssel nicht. Irgendein Problem hat der Feed, sollte ich nächste Woche mehr Zeit haben, dann sehe ich es mir an.

  35. Hallo,
    ich habe sowohl bei rss-import 1 als auch 2 das Problem, dass beim Importieren (in WordPress) die Umlaute nur mit "?" oder anderem kryptischen Zeichen angezeigt werden. Im Ausgangs-(WordPress-)RSS wird beispielsweise das "ü" noch richtig dargestellt.

    Woran kann das liegen? Ich bin etwas verzweifelt. Habe schon ein paar Dinge ausprobiert.

    Ich hoffe, dass mir jemand weiterhelfen kann.
    Viele Grüße, Nico

  36. Ich war offensichtlich eine Sekunde zu spät. Ich hatte schon reagiert und "Fürth" mit "ue" geschrieben.
    Jetzt habe ich es nochmal umgestellt.

    Vielen Dank für die Mühe

  37. Ich kann das Plugin leider nicht aktivieren...kommt folgende Fehlermeldung:

    "Das Plugin kann nicht aktiviert werden, da es einen fatalen Fehler erzeugt."

  38. Inkonsistenz mit anderen Plugins eventuell. Deaktiviere mal alle anderen und versuche es dann. Sollte es dann gehen, dann das Plugin finden, welches das Problem darstellt.

  39. Der Fehler besteht immer noch. Kann es sein, dass RSSImport und RSSImportTwo nicht miteinander harmonieren? Wenn ich RSSImport deaktiviere, kann ich RSSImportTwo aktivieren....

    Ich dachte RSSImport soll man für externe Feeds nehmen und RSSImportTwo für "hauseigene" Feeds, um z.B. eine Startseite zu erstellen...

  40. Ja das stimmt. RSSImportTwo ist nur eine Erweiterung und sollte zeigen, was man leicht mit dem Plugin machen kann, denn es war lediglich als Basis gedacht. Ich habe nun RSSImportTwo verändert, so dass du beide nutzen kannst.

  41. Hmm, jetzt besteht doch noch ein Problem. Wenn ich nun meinen eigenen Feed auf der Startseite einbinden will, bleibt die Seite leer. Bei dem RSSImport funzt es...verwendet hab ich folgende Codezeile:

  42. Bitte Code nochmal oder einfacher: einen Zugang, dass ich mal schauen kann.
    Im übrigen, ist es einfacher die Daten per DB auf das eigene Blog zu holen, wenn du deinen eigenen Inhalte holst.

  43. Gibt es dafür einen Codeschnipsel, um z.B. die 10 letzten Blogeinträge per DB auf die Startseite zu holen?

    Irgendwie taucht der Code nicht in der Live Kommentar Vorschau auf...

  44. Hab ich eigentlich gemacht, aber der Code wird hier nicht angezeigt. Naja, ist ja auch egal, genau diesen Template-Tag habe ich gesucht.

    Vielen Dank für die Hilfe!

  45. Einen Tag verschwendet .... das ist einfach M**T.

    Damit der content incl. HTML importiert wird, muss der Code ein wenig geändert werden.

    Wo soll man das denn ändern ??
    Im Plugin ??? da steht das nicht !!

    Und warum werden nur die Headlines des RSS Feeds und nicht die Bilder, oder die HTMLs geladen ???? Für ist es weder ein Tool, noch nutzerfreundlich .... wer kann mir nun helfen, damit ich eine RSS Datei korrekt einbinden kann ??

    http://feeds.feedburner.com/bild.xml

    Wäre schön, wenn man mir da weiter helfen könnte

  46. Hallo,

    nutze auch schon länger und gerne dein Plugin. Seit dem Update auf die aktuelle Version werden auch bei mir die Umlaute nicht korrekt dargestellt. Funktionierte vorher einwandfrei.

    Woran kann das liegen? Ich habe sonst nichts geändert.

    Danke und Gruß,
    marc

  47. Ein Link wäre hilfreich. Der Feed wird im Zeichensatz erkannt und dementsprechend werden die Sonderzeichen gesetzt. Ansonsten könnte man diese Funktion auskommentieren und den Feed direkt auslesen.

  48. Hey Frank, ist es möglich das Plugin so aufzuboren dass für jeden neuen Inhalt der über den RSS Feed kommt automatisch auch ein neuer Beitrag mit dem Content im Blog angelegt wird? Gruß Sven

  49. @Sven: Eine derartige Anwendung gibt es als Plugin schon. Das ist wesentlich komplexer und einige Autoren haben derartige Plugins zurück gezogen, Contentklau. Aber mit WP-o-matic geht das.

  50. Hallo, besteht die Möglichkeit die Importierten RSS Beiträge mit einem target blank auszugeben? Wenn ja wie mache ich das. Viele Dank für Ihre Mühe und Viele Grüße aus Minden Reinhard