Für Menschen · Seien Sie begeistert und Sie werden begeistern !
Immer wieder kommt es zur der Frage, wie kann ich Inhalte aus WordPress auf anderen Seiten nutzen, also außerhalb von WP. Dazu habe ich vor langer Zeit mal ein kleines Script - siehe „WK - Blogs auf anderen Seiten nutzen“ - veröffentlicht, mit welchem dies über das Auslesen der Feeds möglich ist. Trotzdem bekommen ich noch immer viele Fragen dazu und ich erläutere das ganze hier nochmal an einem Beispiel.
Das Beispiel kann man sich anschauen und downloaden. Für das Design sorgt CSS, welches ich hier nicht eingebunden habe, da es rein um die Funktion geht. Das solltet ihr dann noch anpassen.
Das Demo dindet ihr hier: bueltge.de/test/xmlimport.php
Im folgenden der Code der externen Seite. Dazu ist eigentlich nur zu sagen, dass ich im ersten php-Abschnitt den Feed nach RSS 1.0-Standard lade, das ist bei WP die wp-rss.php im root-Verzeichnis und im zweiten Abschnitt lade ich den Atom-Feed, das ist die wp-atom.php im root-Verzeichnis von WordPress.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" id="xmlreader" >
<head>
<meta http-equiv="content-type" content="application/xhtml+xml;charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="author" content="Frank Bueltge" />
<meta name="publisher" content="bueltge.de" />
<meta name="copyright" content="Frank Bueltge - http://bueltge.de" />
<meta name="keywords" content="WordPress, WP, RSS, Feed, RSSFeed" />
<meta name="Diese zeigt, wei man den RSSFeed nutzen kann, um die Inhalte auf anderen Seiten darzustellen." />
<meta name="page-topic" content="Gastronomie" />
<meta name="robots" content="all" />
<title>Beiträge außerhalb von WordPress</title>
<style type="text/css" title="currentStyle" media="screen" >@import "style.css";</style>
<link rel="Shortcut Icon" type="image/x-icon" href="favicon.ico" />
</head>
<body>
<h2>RSS Import 1.0</h2>
<p>Hier wird der Feed nach Standard 1.0 von WordPress (wp-rss.php) importiert, die letzten 5 Beiträge</p>
<p>Diese Seite mit dem Beispiel downloaden: <a href="xmlimport.phps">Download Datei .phps</a></p>
<div style="margin: 2em; padding: 1em; background: #DDD">
<?php
# Script: XML-Reader
# Copyright: y0y.de, erweitert: bueltge.de
# Hier editieren
$url = "http://bueltge.de/wp-rss.php"; //URL zum XML-Feed
$number = 5; //Anzahl der angezeigten News
# Ab hier nichts mehr ändern
# code
$file_content = @file_get_contents($url);
#Items auslesen
$items = preg_match_all("/<item[ ]?.*>(.*)<\/item>/Uis", $file_content, $array_items);
$array_items = $array_items[1];
if(!empty($array_items)) { //Nur wenn es Items gibt, soll auch was angezeigt werden
if ($number>sizeof($array_items)) $number=sizeof($array_items);
for($n=0;$n<$number;$n++) { //Nur die angegebene Anzahl der News soll angezeigt werden
preg_match("/<link>(.*)<\/link>/Uis", $array_items[$n], $array_link); //URLs auslesen
preg_match("/<title>(.*)<\/title>/Uis", $array_items[$n], $array_title); //Titel auslesen
preg_match("/<description>(.*)<\/description>/Uis", $array_items[$n], $array_description); //Beschreibung auslesen
# Ab hier wird ausgegeben
echo "<h3>$array_title[1]</h3>"; //Titel darstellen
echo "$array_description[1]"; //Ausgabe der Beschreibung
echo "<a href=\"$array_link[1]\" title=\"Click für mehr Informationen\"> mehr</a>"; //Link
}
}
?>
</div>
<hr />
<h2>RSS Import Atom</h2>
<p>Hier wird der Feed nach Standard Atom von WordPress (wp-atom.php) importiert, die letzten 2 Beiträge</p>
<p>Diese Seite mit dem Beispiel downloaden: <a href="xmlimport.phps">Download Datei .phps</a></p>
<div style="margin: 2em; padding: 1em; background: #DDD">
<?php
# Script: XML-Reader
# Copyright: y0y.de, erweitert: bueltge.de
# Hier editieren
$url = "http://bueltge.de/wp-atom.php"; //URL zum XML-Feed
$number = 2; //Anzahl der angezeigten News
# Ab hier nichts mehr ändern
# code
$file_content = @file_get_contents($url);
#Items auslesen
$items = preg_match_all("/<entry[ ]?.*>(.*)<\/entry>/Uis", $file_content, $array_items);
$array_items = $array_items[1];
if(!empty($array_items)) { //Nur wenn es Items gibt, soll auch was angezeigt werden
if ($number>sizeof($array_items)) $number=sizeof($array_items);
for($n=0;$n<$number;$n++) { //Nur die angegebene Anzahl der News soll angezeigt werden
preg_match("/<id>(.*)<\/id>/Uis", $array_items[$n], $array_link); //URLs auslesen
preg_match("/<title type=\"html\">(.*)<\/title>/Uis", $array_items[$n], $array_title); //Titel auslesen
preg_match("/<content type=\"xhtml\">(.*)<\/content>/Uis", $array_items[$n], $array_description); //Beschreibung auslesen
# Ab hier wird ausgegeben
echo "Anm. der Titel: <h3>$array_title[1]</h3>"; //Titel darstellen
echo "Anm. Titel mit Link: <a href=\"$array_link[1]\" title=\"zur Seite\"><h3>$array_title[1]</h3></a>"; //Titel mit Link
echo "$array_description[1]"; //Ausgabe der Beschreibung
echo "<a href=\"$array_link[1]\" title=\"Click für mehr Informationen\"> mehr</a>"; //Link
}
}
?>
</div>
</body>
</html>
Download als txt-Datei: xmlimport.txt - 4 KByte
händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.
Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.
xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>
Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als < und > als > einfügt.
E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.
Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.
Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.
Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.
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.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 971 Beiträge, 19461 Kommentare in 14 Kategorien und 459 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet. Erstellt mit ♥ zum Befüllen und Erhalten.
Design und Code ist unter Copyright
© 2001 - 2012 bueltge.de [by:ltge.de]
25. August 2006 um 11:39
27. August 2006 um 21:35
23. Februar 2007 um 10:55
Super! Schön schlank und einfach ohne Schnickschnack. War in fünf Minuten integriert und an die eigenen Bedürfnisse angepasst.
18. Mai 2007 um 13:57
Hallo!
Das ist genau das Script was ich gesucht habe!
Allerdings funktioniert es bei mir nicht.
Ich lade die Demodatei und erstelle eine neue php Datei auf meinem Server. In diese leere PHP Datei kopiere ich dann 1:1 das Demoscript.
Leider wird der RSS Feed nicht angezeigt.
Was mache ich nur falsch?
Viele Grüß - Sascha
21. Mai 2007 um 11:29
Ohne Code und Link kann ich nichts dazu sagen.
8. September 2007 um 10:52
okay, das einbinden hat funktioniert. wenn ich jetzt allerdings auf "mehr" klicke, gelange ich immer wieder zu WP-Seite und raus aus meiner urspünglichen Seite...
ach und geht das ganze auch irgendwie mit Datum?
10. September 2007 um 09:38
@bioben: das Script ist lediglich ein Beispiel und kann natürlich erweitert werden. Wenn du mehr benötigst, dann schau dir mal meine Plugins RSSImport und RSSImportTwo an, dort lade ich schon Datum und einiges mehr. Den Link "mehr" kann man ebenfalls anpassen oder weglassen. Allerdings sollte dann wohl der komplette Content dargestellt werden.
24. Januar 2008 um 15:02
Vielen Dank für das tolle Script. Genau danach habe ich schon eine Weile gesucht. Klappt bei mir wunderbar und lässt sich auch prima anpassen. So kann man auch ganz bequem die Inhalte von mehreren Blogs auf einer Seite wiedergeben. Klasse Arbeit!
15. Februar 2008 um 13:42
Jetzt kommt endlich der Content aus meinem Blog auf meine Startseite.
Großartig, danke!
26. Februar 2009 um 16:22
danke für das nette tutorial - funktioniert bestens!
perfekt wäre es, wenn man das datum auch ausgeben könnte - habe bereits stunden probiert, aber ich komme nicht dahinter...
wäre nett, wenn du mir einen kleinen hinweis geben könntest.
grüße
günter
26. Februar 2009 um 20:04
Schau mal, im Feed gibt es meist:
$item['pubdate']27. Februar 2009 um 14:29
danke für die rasche rückmeldung auf deinen doch schon recht alten beitrag.
pubdate hab ich schon probiert, geht leider nicht...
27. Februar 2009 um 16:17
Schau mal in das XML des Feed, dort findest du die Syntax, die du dann verarbeitest.
28. Februar 2009 um 10:14
Frank, ich hab's geschaft - vielen Dank für deine Geduld!
Da bei Verwendung der wp-rss.php kein Datum ausgegeben wurde, hab ich die wp-rss2.php eingebunden und inkl. ein paar kleinerer Anpassungen deines Codes hat alles wie gewünscht geklappt!
10. September 2009 um 19:03
hallo,
erstmal danke fuer das tut.
kann man dieses script mit einer Cache funktion erweitern?
das wuerde die ladezeit der webseite um einiges beschleunigen
Gruesse
11. September 2009 um 12:02
Ja sicher, aber in dem Fall musst du einen eigenen Cache bauen, bspw. mit einer Lösung in PHP, den WordPress Cache kann man dann nicht nutzen. her wird ja nur der Feed gelesen.
15. Februar 2010 um 22:35
hallo,
was muss ich für befehle nutzen/einbauen, damit nach dem klick auf "mehr" der Artikel in neuem Fenster geöffnet wird? Und wie kann ich den Abstand (vertikal) verringern?
Ich benutze iFrame um das RSS anzuzeigen der nur 140 px hoch ist. Schaut Gaga aus wenn der Artikel in diesem geöffnet wird.
Würde mich über Hilfe freuen...
Lieben Grüßi
SooV
16. Februar 2010 um 10:28
@Soov: Dazu solltest du dir die Doku zu iframes ansehen, dort ist das vermerkt, denn du musst ja aus dem iframe springen. Ebenso die Größe kann mit CSS verändert werden, die Sites dazu sind sehr vielschichtig.
16. Februar 2010 um 21:23
Hallo Fank. erst mal vielen dank für das tutorial. ich habe da aber noch eine frage.
und zwar folgendes, ich möchte 3 spalten auf einer externen seiten erstellen. und in jeder der 3 spalten soll eine andere kategorie dargestellt werden, Aber nicht nur der titel, sondern auch der inhalt sprich bilder etc.
Wie oder was muss ich nun tut damit die rss feeds nach kategorien sortiert werden und der post inhalt auch dargestellt wird? bin leider nicht so der WP crack und hab auch nicht allzu viel ahnung von php etc.. ich hoffe du kannst mir helfen und bedanke mich schon im voraus viel mals..
danke..
pacino
16. Februar 2010 um 22:46
@Pacino: du kannst für jede Kategorie in WordPress einen eigenen Feed abrufen und den dann parsen, der Feed enthält Title, Description und mehr, also quasi alles, wenn der WordPress Blog so konfiguriert ist.
17. Februar 2010 um 01:11
Hallo Frank.
Ok, aber der vertikale Abstand zwischen der angezeigten Artikelüberschrift und den jeweiligen links unterhalb muss ich doch in deinem Script ändern oder? Bzw. in der CSS?
Vielleicht schaust Du es Dir mal kurz an...
Wie die größe des IFrames zu ändern ist weiß ich. Ich weiß nur nicht ob das in Deinem Script, in der CSS oder am iFrame zu ändern ist mit "öffnen in neuem Fenster"
17. Februar 2010 um 08:46
@SooV: Am Script muss man für die Darstellung nichts ändern, auch Freiraum wird via CSS gestaltet.
17. Februar 2010 um 12:51
Hallo Frank,
den feed sehe ich doch nur eine kategorie anzeigen im feed kann ich nicht, er zeigt mir dann nur den normalen Blog aber halt auch nur diese Kategorie.
Bin leider nicht so der Könner was html und php etc angeht.
In deiner beispielfatei wird ja nur der Titel und der Link zum Artikel gezeigt, wenn ich nun den ihalt avh noch anzeigen lassen möchte muss ich ja noch irgendwas einfügen bei deiner Datei oder? Sowas wie Array_the_content etc. ??
Könntest du mit dies bitte erklären? Vielen dank für deine allgemein gesehen Hilfsbereitschaft. Danke
17. Februar 2010 um 13:39
@Pacino: du bekommst zu jeder Kategorie eines WordPress Blog einen Feed, einfach mal die URL eingeben, Bsp. example.com/category/xyz/feed/ bei aktiven Permalinks, wenn die nicht aktiv sind, dann nutze den Artikel, den ich im Kommentar verlinkt habe um den Feed zu finden. Da muss man also nix mit html oder php machen. Das Anzeigen der Inhalt geschieht durch das Parsen des Feed und Ausgaben der Inhalt, so wie es das kleine Beispiel zeigt.
17. Februar 2010 um 14:11
ok frank, danke soweit. immerhin weiß ich wo ich nun ansetzen muss. danke dir, und hoffe du schaffst weiterhin so gute und nützliche sachem
wenn ich nicht weiter komme, weiß ich ja wo ich dich finde
))
frohes schaffen noch...
Lieben Gruß
SooV
17. Februar 2010 um 20:12
Hallo Frank..
So ich hoffe ich muss dich nun das letzte mal nerven..
Also den Feed konnte ich nun in die einzelnen Kategorien unterteilen und anzeigen so.
Wenn man jetzt auf
http://www.mommyikeepitgangsta.com/blog/wp-content/themes/pacino/test.phpgeht. sieht man ja den Titel und den "Mehr" link. Wie schaffe ich es nun das aber der ganze Post/Artikel angezeigt wird, quasi wie im normalen Blog (das wenn man auf den Titel klickt man zum einzelnen artikel/post mit commentanzeige) kommt? könntest du mir dies erklären?Vielen vielen dank.. und sorry fürs stören.. :S
22. Februar 2010 um 13:57
@Panico: dazu gibt es den Template Tag the_content, der das alles kann. Auch mal im Codex lesen.
16. September 2010 um 17:23
Hallo,
der Pfad zu meinen Feeds lautet
http://www.url.de/blog/?feed=rss2. Wenn ich den Pfad in den obenstehenden Code eintrage erscheint jedoch kein Feed auf der Seite. Auch wenn ich den Code 1 zu 1 kopiere, sprichhttp://bueltge.de/wp-rss.phpdrin lasse wird mir kein Feed angezeigt. Hast du vielleicht eine Ahnung woran das liegen könnte?Vielen Dank und viele Grüße
Christian
16. September 2010 um 18:53
@Christian: nein, sollte eigentlich klappen; in der Demo klappt es ja.
15. Oktober 2010 um 17:50
Ich kann es dir sagen @Christian: Auf deinem Server ist die Funktion "allow_url_fopen" nicht aktiviert. Dann geht das leider nicht, da das Script wohl auch nicht mit relativen Pfaden umgehen kann. Aus Gründen der Sicherheit kann ich vom Einschalten der Funktion "allow_url_fopen" auch nur abraten.
Grüße,
Dominik
16. November 2010 um 19:18
Hallo Frank,
vielen Dank für dein Skript - Ich benutze es auf mehreren Seiten von mir. Leider funktioniert es allerdings auch auf einigen Seiten nicht, was denke ich mal an den Providern liegt.
Muß irgendetwas bestimmtes aktiv sein? Z.B. "url fopen" On sein ???
Würde micht freuen von dir zu hören.
Danke
Dirk
23. November 2010 um 12:29
Es ist so wie ich es dachte.
"url fopen" muß aktiviert sein und "allow_url_include" ebenfalls auf "on".
Es gibt Provider die das erst in teureren Paketen tun. Deshalb funktioniert es bei einigen Anbietern nicht von vorne herein. Vielleicht machst du noch einen Hinweis in deinen Bericht?
Viele Grüße
Dirk
PS: Dein Downloadlink funktioniert auch nicht mehr ....
23. November 2010 um 13:57
@Dirk: habe den Download korrigiert; der Artikel ist aber schon älter. Die Idee klappt noch immer, alternativ kann man aber über ein include der wp-load.php nachdenken und damit alle Funktionen von WordPress direkt nutzen; auch dazu gibt es einige Beiträge hier im Blog.