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

Im Inneren des „Bradbury Building“, das als Drehort für Sebastians Wohnung diente

Blade Runner, deutscher Verleihtitel zeitweise auch Der Blade Runner, ist ein am 25. Juni 1982 erschienener US-amerikanischer Science-Fiction-Film des Regisseurs Ridley Scott. Literarische Vorlage ist der Roman Träumen Androiden von elektrischen Schafen? von Philip K. Dick. Dieser wurde später ebenfalls unter dem Titel „Blade Runner“ vertrieben. Der Film, der Elemente des Film noir übernimmt und eine Dystopie entwirft, war bei Kritik und Publikum zunächst kein Erfolg, wurde mit der Zeit aber zum Kultfilm. In der Bundesrepublik Deutschland lief der Film ab dem 14. Oktober 1982 in den Kinos. Bemerkenswert sind das einflussreiche visuelle Design, die detailreiche Ausstattung und die Filmmusik von Vangelis. Überdies bieten einige Themen des Films vielfältige philosophische Deutungsmöglichkeiten. Ridley Scotts erster Hollywood-Film eröffnete das Genre des Cyberpunk für das Kino und machte den Autor Philip K. Dick nach seinem Tod berühmt.  – 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.

    1. Hallo,

      versuche zum Test doch mal folgendes „[PEFIEW ]http://google.de[/PEFIEW]“ und trag den Shortcode am besten über HTML-Ansicht ein.

  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. Ich bin bei Shophosting.info und habe um Aktivierung der URL file-access gebeten. Mal abwarten. Ich melde mich. Nochmals vielen Dank.

  7. 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!

  8. 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)

  9. 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.