WordPress Plugin zum Einbinden und Filtern von Inhalten aus externen Websiten

Vor-Vorwort

Dies ist mein erstes WordPress-Plugin. Mir ist bewusst, dass es im Stil „quick & dirty“ geschrieben ist und man vieles hätte besser machen können hierzu auch später noch im Ausblick.

Vorwort

Wir sind gerade dabei die Website des Bezirksverbands Mittelfranken der Piratenpartei neu zu strukturieren. Unsere Vorgabe war es die Inhalte möglichst dynamisch anzulegen und viel zu verlinken um die Pflege der Inhalte, wenn sie denn mal drin sind, gering zu halten. Ein klassisches Beispiel sind die Themen der Piratenpartei. Würde man diese manuell einpflegen so müsste man diese Seiten nach jedem Parteitag aktualisieren. Da ohnehin alles relevante auch im Wiki gepflegt ist haben wir uns überlegt ob es denn nicht irgendeine Möglichkeit gibt diese Inhalte in WordPress einzubinden. Lange Rede, kurzer Sinn: Ich habe nichts gefunden und habe mir daher überlegt dieses Plugin selbst zu schreiben.

Das Plugin

WordPress Plugin zum Einbinden und Filtern von Inhalten aus externen Websiten. Kurz PEFIEW. Das Plugin ermöglicht es durch einen Shortcode beliebige Webseiten durch Regex (Regular Expressions) zu filtern und so bestimmte Inhalte einzubinden.

Die gefilterten Inhalte werden in der Datenbank zwischengespeichert und alle 24h aktualisiert. Sollte die Website beim aktualisieren offline sein wird weiterhin die gespeicherte Version angezeigt. Ist die Website länger als 7 Tage nicht erreichbar geht eine Mail an den Seiten-Administrator. Relative Links werden automatisch in absolute umgewandelt.

Verwendung

$before$after
$url                  = URL der einzubindenden Seite
$pattern (optional)   = Regular Expression zum Filter, falls nicht angegeben wird die gesamte Seite eingebunden
$before (optional)    = String der vor dem gefilterten Inhalt ausgegeben wird
$after (optional)     = String der nach dem gefilterten Inhalt ausgegeben wird

Die Regular Expression ist im Sinne des Parameters von preg_match zu verstehen. Da WordPress Probleme damit hat wenn Parameter in Shortcodes HTML-Elemente beinhalten, und die Parameter hier klassischerweise HTML-Strings sind muss ein kleiner Umweg gegangen werden.  Statt spitzer Klammern (<,>) verwenden wir geschweifte ({,}) und statt Anführungszeichen () verwenden wir °. Das Plugin ersetzt diese Zeichen dann vor dem Parsen und Ausgeben.

Möchte man also eine nach einer Überschrift erster Ordnung mit der id „headline“ parsen und diese als Überschrift zweiter Ordnung ausgeben müsste der Shortcode folgendermaßen aussehen.

Beispiele

Einbinden des Artikels des Tages der deutschsprachigen Wikipedia

Artikel des Tages

Roger Guérillot (1964)

Roger Guérillot (* 12. Novem­ber 1904 in Paris; † 31. Okto­ber 1971 in Uccle) war ein fran­zösischer Kolo­nist in Ubangi-Schari, der am Unab­hängig­keits­prozess der Zentral­afrika­nischen Republik betei­ligt war. Er nahm 1961 deren Staats­bürger­schaft an und vertrat seine neue Heimat bei mehreren diplo­matischen Missi­onen. Guérillot ist vor allem dafür bekannt, dass er im Rahmen eines 1956 erlas­senen Gesetzes zur Refor­mierung der franzö­sischen Über­see­gebiete den Comité de salut écono­mique erar­beitete. Dieses geschei­terte Vor­haben, die Anzahl der Plan­tagen in Ubangi-Schari zu erhöhen, war von konser­vativen Vorstel­lungen geleitet, deren Deck­mantel die Ein­bindung der Emanzi­pierungs­bewegung der Kolo­nien war. Im Allge­meinen zeigte sich Guérillots poli­tisches Handeln unbe­stritten als Aus­druck aus­schließ­lich persön­licher Interessen.  – Zum Artikel …

Einbinden der Präambel unseres Grundsatzprogramms



Ausblick

Dieses Plugin entstand aus der Not aber es tut das was ich will, daher halte ich es für sehr wahrscheinlich, dass ich daran vorerst nicht weiterentwickeln werde. Ich habe es aus diesem Grund auf GitHub geladen und Interessierte zur Mitarbeit auf.

https://github.com/sahne123/Wordpress-Plugin-zum-Einbinden-und-Filtern-von-Inhalten-aus-externen-Websiten.-Kurz-PEFIEW.

Ideen wie man das Plugin verbessern könnte: Einzubindende Inhalte und deren Filter etc. sollten in einem Administrationsmenü durch Textfelder eingespeichert werden. Dadurch erspart man sich die geschweiften Klammern und es ist übersichtlicher. Diese Inhalte sollten dann durch einen Shortcode + ID auf den Seiten eingebunden werden können. Bei diesem Vorgehen könnte man dann auch die Refresh-Rate eines Inhalt und die Warnung für jeden Filter individuell einstellen.

Download

Download von PEFIEW

15 Gedanken zu „WordPress Plugin zum Einbinden und Filtern von Inhalten aus externen Websiten“

  1. Hallo! Ich nutze 3.42 und habe dein Beispiel oben ([PEFIEW pattern="#{h2}{span class=°mw-headline° id=°Artikel_des_Tages°}Artikel des Tages{/span}{/h2}(.*){div class=°mehr°}{a href=°/wiki/Wikipedia:Hauptseite/Artikel_des_Tages/Chronologie#s" before="{h2}{span class=°mw-headline° id=°Artikel_des_Tages°}Artikel des Tages{/span}{/h2}" after="{/div}"]https://de.wikipedia.org/wiki/Wikipedia:Hauptseite[/PEFIEW]) in einen Artikel einzubinden versucht.

  2. Danke für deine Hilfe, aber leider funktioniert es immer noch nicht. Habe PEFIEW noch einmal installiert, alle anderen Plugins abgeschaltet, den Shotcode über HTML eingefügt.
    Brauche ich zusätzlich ein PHP-Plugin, muss ich PEFIEW etwas einstellen …?

  3. Keine Antwort. Schade. Hast wahrscheinlich zu viel um die Ohren, wie zu lesen ist. Falls du Zeit hast: Liegt es vielleicht am Theme? Deines finde ich leider nirgends zum Download …

  4. Habe es eben nochmal bei einem neu aufgesetzten Blog probiert:

    1. Datei herunterladen und entpacken
    2. Den PEFIEW Ordner per FTP ins /wp-content/plugins/ Verzeichnis kopieren
    3. Im Adminbereich das Plugin aktivieren
    4. Testseite mit dem Shortcode: [PEFIEW]http://google.de[/PEFIEW] erstellt

    Klappt bei mir einwandfrei. Am Theme kann es auch nicht liegen 🙁 Tut mir leid, dass es bei dir nicht klappt

  5. Es könnte sein, dass dein Hoster „URL file-access“ deaktiviert hat. Bei 1und1 ist das z.B. eine Option die man explizit aktivieren muss, bei wem bist du?

  6. Falls du allow_url_fopen und allow_url_include mit URL file-access meinst, so wird mein Provider diese Optionen aus Sicherheitsgründen nicht freischalten. Gibts eine andere Möglichkeit oder einen/deinen Provider? Danke!

  7. Genau! um allow_url_fopen geht es, denn wenn diese Option nicht gesetzt ist lässt sich der Inhalt der Einzubindenden Website nicht laden.

    Dass Provider diese Option nicht freischalten habe ich auch noch nicht gesehen. Bei einem anderen Provider sollte das funktionieren. Ich selbst bin all-inkl.com (Solltest du über diesen Link ein Hosting bestellen, erhalte ich eine Werbe-Gutschrift: https://all-inkl.com/?partner=167389)

  8. Habe dein Plugin erfolgreich eingesetzt. Ich stelle fest, dass wenn ich keine (Text)Zeichen vor dem Shortcode gesetzt habe das Plugin „YPE html>“ voranstellt, also vor den importierten Artikel setzt.Ich kann mir derzeit nur selbst helfen indem ich ein Zeichen (einen weißen Punkt) als breaker davor setzte.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.