underscore.js – Objekt nach Memberwerten sortieren

Die JavaScript-Library underscore.js it ja nun schon seit dem Erscheinen der WordPress Version 3.5 fester Bestandteil der Installation. Wie man seine Scripten in WordPress richtig einbindet und die Abhängigkeiten gleich mit auflöst, hatte ich in einem anderen Post bereits besprochen. Heute soll es um ein konkretes Problem gehen, bei dem sich Helperfunktionen von underscore.js als sehr nützlich erweisen.
„underscore.js – Objekt nach Memberwerten sortieren“ weiterlesen

Quicktipp: Entfernen von „QuickEdit“-Links

Ich hatte hier heute eine eine recht einfache Geschichte auf dem Tisch, die sich aber bei genauerer Betrachtung wieder als recht interessant erwies. Zur Zeit nerve ich meine Teamkollegen hier gerade, Namespaces einzusetzen, um einerseits Kollisionen zu vermeiden und um andererseits den Code lesbarer zu halten und letztlich besser zu organisieren. Die Idee ist – zu meiner großen Freude – gut angenommen worden.

Da unsere Plugins hier direkt auf den Kunden zugeschnitten sind und wir zudem die Kontrolle darüber haben, welche PHP Version auf den Servern läuft, ist das Ganze überhaupt erst durchführbar. Namespaces sind ja erst mit der Version 5.3 eingeführt worden und obwohl, PHP 5.2 meines Wissens nach seit Januar 2011 keine Updates mehr erhalten hat, ist die Version noch bei sehr vielen Hostern installiert. „Quicktipp: Entfernen von „QuickEdit“-Links“ weiterlesen

Manage Plugins: Links zu WordPress-Plugins hinzufügen

Heute mal ein kurzer Artikel, der sich vor allem an Entwickler richtet, die sich unter anderem mit der Programmierung von WordPress-Plugins beschäftigen.

Ich hatte heute etwas zu erledigen, dass ich gerne teilen möchte, weil es durchaus die Usability (oder aber wenigstens den Komfort für Kunden) erhöht, wenn man beispielsweise Links zur Konfiguration eines Plugins auch gleich direkt mit in den Bereich integriert, wo eben gerade die Aktivierung stattfand.

„Manage Plugins: Links zu WordPress-Plugins hinzufügen“ weiterlesen

Custom Post Types Quickstart

Ich bin immer wieder erstaunt, wie einfallsreich so mancher Kollege vorgeht, die verschiedenen Arten von Inhalten unserer Kundschaft zu organisieren, ohne Custom Post Types einzusetzen. Fast scheint es, als wenn um jeden Preis vermieden werden soll, die nach meinem Empfinden äußerst sinnvolle Möglichkeit einzusetzen, eigene Typen von Posts definieren zu können.

„Custom Post Types Quickstart“ weiterlesen

Kurzes Statement zu wpautop

Weil das in meiner unmittelbaren Umgebung gerade thematisiert wird:

Nicht alle Nutzer finden den wpautop-Filter lästig oder einfach nur *PIEP*.

Ich bin überzeugt davon, dass diese Aussagen auf Informationen beruhen, die sich auf ältere WordPress-Versionen beziehen. Zudem finde ich solche Verallgemeinerungen sowieso gefährlich, wenn es doch scheinbar darum geht, ein Symptom zu kurieren.

„Kurzes Statement zu wpautop“ weiterlesen

GenericDecorator mit Durchschlag

Gleich eines vorweg: Das ist wieder einmal ein Artikel zu einem sehr speziellen Detail der Implementierung eines Design Patterns in PHP, was unter Umständen furchtbar langweilig sein kann, wenn man mit der Materie eher wenig zu tun hat. Wer sich für solche Sachen eher nicht interessiert, ist mit diesem Artikel also schlecht bedient. Nachdem ich das nun losgeworden bin, will ich gleich mal durchstarten und die Eckdaten der Umgebung kurz beschreiben, für die ich in letzter Zeit fast ausschließlich entwickle. „GenericDecorator mit Durchschlag“ weiterlesen

XML, JSON und RDF

XML (eXtensible Markup Language) und JSON (JavaScript Object Notation) zu verarbeiten, ist dank der Funktionen, die PHP bereits zur Verfügung stellt, absolut kein Problem mehr. Wenn auch JSON ursprünglich wohl vor allem für AJAX-Anwendungen gedacht war, bevorzuge ich selbst das Format auch in PHP-Anwendungen, wenn ich den Overhead der XML-Daten vermeiden kann und möchte.

Die Geonames-Webservices bieten einen hervorragenden Startpunkt, weil beispielsweise deren Suche mindestens beide zuvor genannten Formate liefern kann. Außerdem sind die Daten vermutlich für die Projekte vieler Webmaster sehr interessant. Meine Beispiele sind eher auf die Demonstration der Daten ausgerichtet. Wer sich für speziellere Anfragen interessiert, sollte sich die Dokumentation der Webservices genauer ansehen.

Um eine ganz allgemeine Abfrage nach dem Wort london zu starten, reicht folgender URL:

http://ws.geonames.org/search?q=london&maxRows=10

Der Parameter maxRows steuert die Anzahl der Ergebnisse. Standardmäßig werden die Daten in XML zurückgeliefert.  Möchte man die Daten im JSON-Format erhalten, fügt man einfach den Parameter type hinzu:

http://ws.geonames.org/search?q=london&maxRows=10&type=json

Wer sich die Liste der Geonames-Services genauer angesehen hat, wird vielleicht bemerkt haben, dass die Resultate der Suche außerdem in RDF (Resource Description Framework) geliefert werden können. Wer in die Welt des Semantischen Webs eintauchen will, sollte sich sowieso näher mit diesem Format beschäftigen. Als Startpunkt möchte ich DBpedia empfehlen, wenn man noch keine Idee dazu hat.

Die SimpleXML-Funktionen von PHP werden bei RDF scheitern. Auch wenn das Format RDF/XML genannt wird, hat die SimpleXML-Klasse Probleme mit den Doppelpunkten in den XML-Entities. Allerdings gibt es auch für dieses Problem bereits verschiedene Lösungen. Die von mir bevorzugte Lösung ist Arc. Das Paket muss nur geladen und auf den Server verfügbar gemacht werden. Wie alle 3 beschriebenen Format nun mit PHP benutzt werden können, veranschaulicht (hoffentlich) folgender Code:

Wer die Ausgabe der Abfrage sehen will, kann sich das Script auch in Aktion ansehen.

Kurzes Update vom 22.12.2017: Bei den Anfragen an die Geonames Services muss der Username als Parameter mit angegeben werden, was im Code jetzt auch ersichtlich ist. Ersetzt einfach USERNAME mit eurem Login.