Zusätzliche Links auf der Plugin Übersichtsseite unterbringen

Ihr kennt ja die übliche Plugin Übersichtsseite, auf welcher man eine kurze Beschreibung des Plugins, die Version, den Autoren, einen Link auf die Pluginseite und so weiter enthält. Auf der linken Seite befinden sich dabei der Aktivierungslink, beziehungsweise der Deaktivierungs- und Bearbeitenlink. Immer mal wieder sieht man allerdings Plugins, welche hier noch einen Einstellungslink oder ähnliches unterbringen.

Manchmal macht es keinen großen Sinn für ein Plugin einen extra Menüpunkt im Admin anzulegen. Die Funktion des Plugins ist so beschränkt, dass es eigentlich nicht im Menü erscheinen, sondern einfach nur laufen sollte. Wenn allerdings dennoch Einstellungen vorgenommen werden können ist ein solcher zusätzlicher Link auf der Plugin-Seite natürlich sehr interessant.

Also habe ich mich auf die Suche gemacht, wie ein solcher Link von einem Plugin erzeugt werden kann. Dazu dient der Filter “plugin_action_links“. Dieser Filter enthält sämtliche Action Links, welche in der Plugin Übersicht angezeigt werden sollen, als Array. Da diese bei jedem Plugin andere sind, muss der Filter korrekt auf das eigene Plugin angepasst werden. Dazu wird der Filtername um den Basenamen des Plugins erweitert:

add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'function_to_execute' );

An den Filter wird also ein Array von Links übergeben. Diesen Array kann man nun beliebig erweitern und daraufhin zurückgeben. In meinem Beispielcode hänge ich beispielsweise einen Link auf meine Webseite an:

Doch: Wie erstellt man im Admin eigentlich eine Seite, welche nicht im Menü erscheint? Dazu kann man über add_submenu_page() gehen, wobei man den Slug des Elternmenüs mit dem Wert ‘null’ angibt:

add_submenu_page( null, 'Titel', 'Titel', 'manage_options', 'unsichtbar', 'render_function' );

Diese Seite erreicht man im Admin beispielsweise mit wp-admin/?page=unsichtbar, indem man also einfach den GET-Parameter page mit dem Pageslug angibt.

Animierte GIFs in WordPress verwenden

Wenn Ihr animierte GIFs in WordPress verwenden wollt stellt Ihr wahrscheinlich fest, dass aus dem animierten ein statisches GIF geworden ist. Dies passiert aufgrund des Skalierungsmechanismus von WordPress. Für jedes Bild, welches Ihr hochladet, kreiert WordPress Kopien in verschiedenen Größen. Die Größen werden dabei vom Theme oder auch von Plugins festgelegt.

Verwende animierte GIFs mit WordPress
Wähle die Originalgröße aus, um das animierte GIF anzuzeigen.

Das Problem mit animierten GIFs ist, dass WordPress nicht das animierte GIF sondern nur den ersten Frame der Datei nimmt und dieses Bild in den verschiedenen Größen hinterlegt. Wählt Ihr das GIF also über den WordPress Media Manager aus, kann es passieren, dass Ihr ein skalierten Bild statt dem Original-GIF wählt. Um das animierte GIF auszuwählen, muss man in der Größen Selectbox die volle Größe auswählen. WordPress wird dann das unveränderte Originalbild, also die Animation, anzeigen.

 

Kurze technische Anmerkung: Abhängig davon, welche Bildverarbeitung vom Server unterstützt wird wählt WordPress zwischen GD Image und Imagick. Die Funktion _wp_image_editor_choose() in wp-includes/media.php trifft dabei die Auswahl, welches Programm Verwendung findet. WordPress skaliert Bilder also entweder mit Hilfe der Klasse WP_Image_Editor_Imagick oder der Klasse WP_Image_Editor_GD, welches beide Erweiterungen der Klasse WP_Image_Editor sind.

WordPress 4.2.1 behebt schwerwiegenden XSS Angriffsvektor

Das WordPress Update 4.2.1, welches wenige Tage nach der Version 4.2 am 27. April 2015 veröffentlicht wurde, behebt eine gravierende Sicherheitslücke in WordPress, welche wohl schon seit etwas längerer Zeit bestand aber erst jetzt entdeckt wurde. Im entsprechenden Security Release von WordPress heißt es:

Vor wenigen Stunden wurde das WordPress Team auf eine Cross-Site Scripting Anfälligkeit hingewiesen, welche es Kommentatoren ermöglichte eine Seite zu kompromittieren.

Über die Kommentarfunktion konnte der Angreifer unter bestimmten Umständen Schadcode einfügen, welcher in der Datenbank hinterlegt wurde. So war es möglich, den Admin Account zu übernehmen, sobald der Administrator den entsprechenden Kommentar aufrief. Entsprechend zügig wurde die Lücke geschlossen und das Update ausgeliefert.

Photo Credit: Colin / Wikimedia Commons / CC-BY-SA-4.0

Shortcodes escapen

Wenn man selbst WordPress Plugins schreibt, so kennt man das Problem: Man erstellt eine WordPress-Seite, um auf dieser das Plugin einem größeren Publikum vorzustellen und auf dieser Seite möchte man nun erklären, wie man den Shortcode einsetzt. Nur: Wenn das Plugin selbst läuft, ist natürlich auch der Shortcode aktiv. Was also tun? Bisher hatte ich mir immer ein kleines Script in der entsprechenden functions.php abgelegt: “Stop Shortcode”. Dieses stellte nur einen kleinen Shortcode bereit, in welchen ich meine aktiven Shortcodes einbetten konnte, ohne dass diese ausgeführt wurden.

Doch: Man kann Shortcodes escapen! Wenn man einen Shortcode mit einem einfachen Brackt (diesem Zeichen: [) beginnt, so wird dieser ausgeführt. Mit zwei Brackets jedoch wird dieser nicht ausgeführt: Statt also die Galerie-Funktion auszuführen wird [[gallery]] also als [gallery] ausgegeben.

Über diese Lösung bin ich gestolpert, als ich mir den regulären Ausdruck, mit welchem Shortcodes ausgeführt werden, näher anschaute. Dieser findet sich in der wp-includes/shortcodes.php.

Möchte man einen Shortcode mit Inhalt escapen geht man folgendermaßen vor:

[[shortcode]Inhalt[/shortcode]]

Photo Credit: Execute, CC 2.0