Code, Entwicklung, PHP, Tipps, WordPress

Chrome Logger – ChromePHP

Der Webinspector in Chromium ist mir ans Herz gewachsen, Firebug ist für mich nur notwendig, wenn ich im Firefox validieren muss. In diesem Zusammenhang habe ich auch das Debuggen im PHP Umfeld dort abgebildet. Bin ich nicht komplett in der IDE und man braucht diverse Daten im Debuggmodus, dann kann man dies über die Wege var_dump() in der Applikation ausgeben oder alternativ in Chromium mit Hilfe der Erweiterung Chrome Logger und der Library ChromePHP tun. Somit wird die Oberfläche nicht durch die Debug-Ausgaben zerstört und kann in Systemen bei Kunden sauber in die Konsole des Webinspector überführt werden. Dazu einige Hinweise.
Weiterlesen

Standard
Code, PHP, Plugin, Tipps, WordPress

Update-Prüfung für ausgewählte Plugins in WordPress Multisite unterbinden

Nichte selten werden für Kunden spezielle Plugins erstellt, die nicht im offiziellen Repository von WordPress liegen und trotzdem der Update-Prüfung unterliegen. Auch kann es dazu kommen, dass Plugins im Repository hinzukommen, die den gleichen Namen haben und damit ggf. versehentlich vom Anwender durch das Autoupdate überschrieben werden. Für eigene Plugins kann man dies in einer Single-Installation recht gut unterbinden – in einer Multisite Installation sieht dies anders aus. Ist das jeweilige Plugin in einem Blog des Netzwerkes aktiviert, dann wird die Prüfung durch das Plugin auch nur dort unterbunden, denn nur in dem Blog ist es inkludiert. In der Netzwerkverwaltung bleibt die Prüfung aktiv und ggf. werden dort Updates angeboten und überschreiben das Plugin.
Weiterlesen

Standard
Code, PHP, Plugin, Tipps, WordPress

Taxonomien im WordPress Media Manager nutzen

Mit WordPress 3.5 hat sich insbesondere im Medien- und Attachment Umfeld viel geändert. Es wurde nicht nur in der Oberfläche geschraubt sondern auch viel im Workflow und in den Standards geändert. So benutzt die Medienverwaltung seit 3.5 die Standard-UI der Post Types und kann daher ebenso einfach erweitert werden, wie das bereits von anderen Post-Typen bekannt ist. So lassen sich einfach Meta Boxen ergänzen und neue Daten und Inhalte speichern. In diesem Zusammenhang kann man daher auch recht einfach eine Kategorisierung, Taxonomie zu den Medien aktivieren. Dazu möchte ich zwei Lösungen vorstellen, die einfach genutzt werden können oder zum weiter entwickeln anregen.
Weiterlesen

Standard
WordPress

WordPress Dropins

WordPress und Plugins sind hinreichend bekannt und beliebt, bringen sie doch den Inhaber des Blogs in die Lage, das Blog an eigene Bedürfnisse recht einfach zu verändern und an eigenen Anforderungen anzupassen. Weniger bekannt sind Dropins.

WordPress erlaubt das Ersetzen diverse Funktionen unter anderem mit den sogenannten Dropins. Die Liste der Möglichkeiten ist nicht sonderlich groß und doch wenig dokumentiert. Insbesondere auf den Ersatz des Cache um Cache-Möglichkeiten des Servers zu nutzen, greife ich oft zurück. Dabei insbesondere APC und Memcache. Aber auch die Anpassung von Uploads, Permalinks und ähnliches sind ein typisches Scenario von Dropins.

Die Masse der Plugins müssen im WP Content Ordner abgelegt werden. Im Standard ist dies der Ordner wp-content oder er ist via Constant WP_CONTENT_DIR bzw. die URL in WP_CONTENT_URL definiert.
Beispiel:


// Custom content directory
define( 'WP_CONTENT_DIR',  dirname( __FILE__ ) . '/wp-content' );
define( 'WP_CONTENT_URL',  'http://' . $_SERVER['HTTP_HOST'] . '/wp-content' );

Dieses Vorgehen nutze ich beispielsweise in meiner Entwicklungsumgebung oder auch bei Kunden, da ich so bspw. auf Plugins via FTP getrennt zugreifen kann. Näheres und weitere Lösungen dazu findet man in meinem Starter auf Github.

Einzig Dropins, die mit dem Sprachschlüssel geladen werden, liegen nicht direkt in diesem Ordner, sondern im Standard in /wp-content/languages. Alternativ kann der Ordner via Konstante WP_LANG_DIR definiert werden.
Das Dropin für den deutschen Schlüssel folgt diesen Weg, nähres im Repo des Dropins zu finden.

Im Backend werden Dropins seit Version 3.0 von WordPress gelistet, allerdings nur die folgenden in der Tabelle und nicht das Dropin zum Sprachschlüssel. Ebenso kann mann es nicht via backend de-/aktivieren, was in einigen Fällen die Lösung via klassischem Plugin bevorzugt.

Im folgenden daher eine Tabelle alle Dropins, die ich kenne bzw. gefunden habe. Die möglichen Dropins werden über die Funktion _get_dropins() zurück gegeben.

Datei Type des Dropin Aktiv wenn Context
advanced-cache.php Erweiterter bzw. Alternativer Cache Konstante WP_CACHE ist TRUE Single & Multisite Installation
db.php Eigene Databank Klasse Immer Single & Multisite Installation
db-error.php Eigene Datenbank Fehler Meldung Beim DB Fehler Single & Multisite Installation
install.php Eigene Installationsroutine Bei der Installation Single & Multisite Installation
maintenance.php Eigene Wartungsmeldung Bei Updates, Wartung Single & Multisite Installation
object-cache.php Externer Object Cache Immer Single & Multisite Installation
sunrise.php Bevor die WP Multisite Installation lädt Wenn Konstante SUNRISE gesetzt Multisite Installation
blog-deleted.php Eigene Meldung, wenn ein Blog gelöscht wird Wenn ein Blog gelöscht wird Multisite Installation
blog-inactive.php Eigene Meldung, wenn ein Blog inaktiv gesetzt wird Wenn ein Blog inaktiv wird Multisite Installation
blog-suspended.php Eigene Meldung, wenn ein Blog eingestellt wird Wenn ein Blog als Archiv oder als Spam markiert wird Multisite Installation
$locale.php Funktionen bei aktivem Sprachschlüssel Wenn Sprachschlüssel in Konstante WP_LANG gesetzt Single & Multisite Installation
Standard
Code, PHP, Tipps, WordPress

WordPress bloginfo-Funktion beinflussen

Kleiner Tipp am Rande, da die Frage schon mehrfach auftauchte. Die get_bloginfo() Funktion gibt diverse Inhalte aus der Installation zurück, näheres beschreibt der Codex, inklusive aller Parameter. Nun passen die Inhalte nicht immer zur geforderten Aufgabe und auch diese Funktion besitzt einen Filter Hook, so dass man gezielt darauf eingehen kann und unter bestimmten Bedingungen anpassen kann.
Weiterlesen

Standard
Code, Entwicklung, PHP

Mantis Bug Tracker Plugins für BBCode und Markdown


Mantis ist einer meiner Favoriten beim Tracken von Bugs bzw. beim Issue Tracking, wenn es um eigenständig gehostete Lösungen geht; insbesondere bei Kunden in geschlossenen Netzen greife ich gern auf MantisBT zurück. In der Masse arbeiten dann Endanwender damit, weniger Leute, die ihre Inhalte formatieren wollen bzw. das nötige Wissen dazu mitbringen. In der Vergangenheit hat sich dies etwas verschoben und so war es ein Bedürfnis Code zu formatieren und wie gewohnt von anderen Plattformen aufzuhübschen. Dabei sind zwei kleine Plugins – BBCode und Markdown für MantisBT – entstanden, die ich hier gern nennen möchte und für alle, die ebenso auf Mantis setzen, als Hinweis hinterlege.
Weiterlesen

Standard
Code, PHP, Tipps, WordPress

WordPress Benutzerdefinierte Felder im Admin Bereich nutzen

Die benutzerdefinierten Felder von WordPress dienen wohl den meisten Anwendern eher dazu, um Zusatzdaten und Logiken im Frontend abzubilden. Diverse Anforderungen brauchen diese Werte auch im Backend um darauf zu reagieren. Mittels einem Filter sind diese Werte schnell verfügbar, was sie im Standard nur am Post sind und damit stehen sie nicht in der Übersicht der Artikel/Seiten zur Verfügung. Diese Werte sind aber schnell ergänzt.
Weiterlesen

Standard
Code, PHP, Tipps, WordPress

WordPress Artikelbild automatisch setzen

Wer in seinem WordPress Blog mit dem Artikelbild arbeitet und immer eines setzen will, muss – je nach Layout-Umsetzung, der kann mit Hilfe eines kleines Plugins das Setzen automatisch erledigen lassen.
Das folgenden kleine Plugin tut dies, wenn kein Featured Image gesetzt ist und schnappt sich das erste Bild, welches zum Artikel hochgeladen wurde.
Weiterlesen

Standard
Code, PHP, Tipps, WordPress

Daten aus WordPress an JavaScript übergeben #2

Im ersten Artikel dieser kleinen Serie habe ich aufgezeigt, wie man von PHP an JS mittels JSON übergibt. Alternativ kann man dies auch mittels der WordPress-Funktion wp_localize_script() tun, die einige Fallstricke bereit hält. Dazu dieses kleine Tutorial und ihr solltet euch mit diesen beiden Lösungen den Weg mi Vorfeld gut überlegen.
Weiterlesen

Standard