Month: April 2015

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

Hilfe-Tabs für das eigene Plugin erstellen

Create your own help tab

In diesem Beitrag möchte ich erläutern, wie man die Hilfe-Tabs des WordPress Admins für das eigene Plugin nutzen kann.

Hilfe-Tab erstellen
Hilfe-Tab erstellen

Beginnen wir also mit der Grundlage und erstellen eine neue Seite im Admin Menü:

Wie ihr wisst, erstellt man mit Hilfe von add_menu_page() einen neuen Menüpunkt. Diese Funktion gibt dabei die ID der neu registrierten Seite zurück. Mit Hilfe dieser können wir uns in die spezifische Load-Aktion der Seite einhaken:

add_action( 'load-' . $page_with_help, 'pwh_add_help_tab' );

In dieser Aktion werden wir nun unseren neuen Hilfe-Tab registrieren und ihm einige Inhalte geben.

Den Hilfe-Tab hinzufügen

Zunächst müssen wir den aktuellen Screen erhalten. Dazu können wir die Funktion get_current_screen() nutzen, welche uns das aktuellen WP_Screen Objekt zurückgibt. Dieses enthält unter anderem die Hilfe-Tabs.

Im zweiten Schritt werden wir nun mittels WP_Screen::add_help_tab() einen neuen Hilfe-Tab hinzufügen. Ein solcher enhält eine ID, einen Titel und den Inhalt:

Mit diesen zwei einfachen Schritten können wir unsere eigenen Hilfe-Tabs erzeugen, welche sich perfekt in das WordPress Design einfügen. Wir können auch eine Callback Funktion benennen, welche das Rendering des Inhalts übernimmt.

Mit einer solchen Callback Funktion erweitern wir unsere Möglichkeiten, den Output zu gestalten. Diese Funktion kann zwei Parameter aufnehmen: Zum einen das aktuelle Screen Objekt und zum anderen den aktuellen Hilfe-Tab.

Eine Sidebar erstellen

Auch die Hilfe Sektion kann über eine Sidebar verfügen. Sobald wir einen Tab registriert haben können wir dazu auf set_help_sidebar() zurückgreifen. Der Inhalt der Sidebar wird dann auf der rechten Seite der Sektion dargestellt.

Es ist also wirklich einfach, eine kleine Hilfe-Sektion für das eigene Plugin zu entwickeln. Für Eure Plugin-Nutzer kann eine gut gestaltete Hilfe dabei Gold wert sein.