WordPress

WordPress: Wie 404-Seiten den Server lahmlegen können

Auch Fehlerseiten verursachen Last auf dem Server und das kann auch mal sehr unangenehm werden.

Eigentlich ist das Problem kein spezifisches WordPress-Problem, sondern vielmehr ein grundlegendes. Ich ordne es hier nur ein, weil ich gerade bei einem Kunden mit einem WordPress genau dieses Problem hatte. Jetzt aber erstmal zum Hintergrund:

WordPress: Wie 404-Seiten den Server lahmlegen können weiterlesen

WordPress

WordPress: Alle ausgeführten Queries debuggen

So einfach kann man alle pro Request ausgeführten Queries auslesen und den Ursprung debuggen.

Bei einem Kunden habe ich heute wirklich sehr viel Zeit damit verbracht herauszufinden, welche Queries bei einem Seitenrequest von WordPress ausgeführt werden und wo der Ursprung dieser Datenbank-Anfragen liegt.

WordPress: Alle ausgeführten Queries debuggen weiterlesen

CSS

CSS und FontAwesome: FontAwesome als Symbole in Listen benutzen

So einfach können die Symbole als der FontAwesome Bibliothek als Listenpunkte in Listenelementen benutzen.

fontawesome

Die Symbole von verschiedenen WebFont Libraries, beispielsweise FontAwesome, lassen sich auch wunderbar als Listenpunkte benutzen. Das kann ganz einfach mit einem kleinen Trick – nämlich dem :before Pseudo-Element erreichen. So sieht das ganze direkt in CSS aus: CSS und FontAwesome: FontAwesome als Symbole in Listen benutzen weiterlesen

GIT

Git: Zip-Datei aller geänderten Dateien erstellen

So erstellen Sie eine Zip-Datei die alle Dateien enthält, die zwischen zwei Commits  gemacht wurden.

Wenn man zwar intern Git für die Entwicklung benutzt, aber in der Produktionsumgebung Git nicht nutzen kann, muss man immer wieder manuell Dateien auf das Produktionssystem kopieren. Leider ist es so, dass man dabei ab und an mal etwas vergessen kann. Mit Git, Zip und der Kommandozeile kann man allerdings Zip-Dateien erstellen, die lediglich die geänderten Dateien enthalten. Damit wird das deployen deutlich einfacher.

So gehts: Git: Zip-Datei aller geänderten Dateien erstellen weiterlesen

Javascript

jQuery masonry: Problem mit überlappenden Bildern fixen

Wenn Sie masonry für jQuery einsetzen und dabei überlappende Bilder haben, können Sie das Problem so beheben.

Das jQuery-Plugin masonry ist wirklich genial, denn es ordnet unterschiedliche große Boxen auf der Seite so an, dass Sie irgendwie ordentlich ineinander übergehen. Das sieht zum Beispiel so aus, wie die Social Cloud von kl3tte.de:

masonry

Nun kann es bei der Einbindung allerdings vorkommen, dass Bilder überlappen und dadurch die Boxen nicht ordentlich dargestellt werden. Das liegt dann in der Regel daran, dass die Bilder einfach noch nicht fertig geladen waren, als masonry die Größe der Boxen berechnen wollte.

Mit einem kleinen Trick kann man das ganz einfach beheben. Man wartet einfach auf das load-Event des Fensters (window). Wenn das ausgelöst wird, sind alle Bilder vollständig geladen und masonry kann ordentlich arbeiten.

jQuery( window ).load(function() {
  var msn = jQuery('#stream').masonry({itemSelector: '.msi'});
 });

Viel mehr ist nicht zu tun.

WordPress

WordPress Themes oder WordPress Apps

Man sollte Themes vielmehr als Apps innerhalb von WordPress verstehen.

Wenn ich mir die Projekte der letzten zwei Jahre anschaue, dann sind es 80% bis 90% WordPress-Projekte und in der Regel die Entwicklung von komplexeren Sites mit WordPress.

Die Themes die dabei meistens herauskommen, sind komplexe Anwendungen die eigentlich nicht mehr viel mit Themes im eigentlichen Sinne zu tun haben. Zwar machen stellen sie natürlich auch immer noch Inhalte dar, aber im Hintergrund machen Sie meistens auch noch viel viel mehr.

Längst bringen Themes eine Vielzahl von Logik mit und verändern auch das Aussehen und Verhalten von WordPress im Backend. Einige legen eigene Post-Types und Taxonomien an und verändern die Darstellung in der Redakteursoberfläche oder bringen vollkommen eigene Oberflächen mit. Die Möglichkeiten sind nahezu unbegrenzt.

Aus meiner Sicht kann man darum komplexe Themes also vielmehr als Apps, Anwendungen oder Applikationen verstehen. Sie haben eigene Logik, Funktionen, Abläufe, Modelle und Aussehen und sie greifen zum Teil sehr stark in der Verhalten von WordPress ein.

Wenn ich für Kunden Projekte umsetze, sind die wichtigen Funktionen tatsächlich alle direkt im Theme enthalten. Er kann es anstellen und es funktioniert alles. Er muss also nicht noch Plugins installieren, um das Theme zu nutzen, sondern kann dessen Funktionalität mit Plugins erweitern. Aus diesem Grund ist WordPress mehr ein Framework oder Anwendungscontainer indem meine WordPress Apps (Themes) laufen, die man wiederum mit Plugins erweitern kann.

Dies hat aus meiner Sicht unglaubliche Vorteile, denn Deployment und Testing werden dadurch deutlich vereinfacht. Man hat keine Abhängigkeiten und muss lediglich das Theme updaten oder erweitern für neue Funktionen.

Wie seht Ihr das?

PHP

PHP: Alle Zeichen außer Buchstaben, Zahlen, Leerzeichen, Bindestriche und Unterstriche entfernen

Wenn man aus normalen Strings Dateinamen bilden möchte, muss man recht viele Zeichen entfernen. Hier eine kleine Funktion die nahezu alles außer Buchstaben, Zahlen, Leerzeichen, Bindestriche und Unterstriche entfernt.

Wenn man der Funktion removeInvalidChars eine beliebige Zeichenkette übergibt, dann bekommt man als Ergebnis eine bereinigte Zeichenkette.

function removeInvalidChars($input) {
    return preg_replace("/[^0-9a-zA-Z \-\_]/", "", $input);
}
WordPress

WordPress: Die ID eines Bildes anhand der URL ermitteln

So können Sie die ID eines Bildes anhand der hinterlegten URL in WordPress ermitteln.

Ab und an ist es nötig, die ID eines Bildes anhand der URL zu ermitteln. Dazu kann man folgende kleine Funktion nutzen.

function get_image_id($image_url) {
  global $wpdb;
	$url_comp = parse_url($image_url,PHP_URL_PATH);
	$up_dir = wp_upload_dir();
	$upload_dir = parse_url($up_dir['baseurl'],PHP_URL_PATH);
	$att_path = str_replace($upload_dir. '/', '' ,$url_comp );
	$query = "SELECT post_id FROM " . $wpdb->postmeta . " WHERE meta_key = '_wp_attached_file' AND meta_value='%s';";
	$attachment = $wpdb->get_col($wpdb->prepare($query, $att_path ));
  return $attachment[0];
}

Sie ist nicht perfekt, macht in meinen Projekten genau das was sie soll.

Technologie und Programmierung

Cronjobs mit Bash bei domain factory

So erstellen Sie die Cronjobs mit Bash bei domain factory richtig.

Wer, wie ich, nicht allzu oft mit Bash-Scripten arbeitet, kann durchaus leicht verzweifeln, wenn man sein Script bei domain factory als Cronjob einstellen will. In der Konsole läuft alles, aber der Cronjob macht nichts.

Der Trick bei der Sache ist, dass man die Ausführungsanweisung in der Kopf der Datei unbedingt einfügen muss. Etwas was ich, als Ab-und-zu-Script-Nutzer, nicht gemacht habe. Wenn man also SH haben will, muss man folgendes einfügen:

#!/bin/sh

Ziemlich trivial – hat mich allerdings schon Stunden gekostet.

WordPress

WordPress: Automatische Updates von WordPress ausstellen

So können Sie die automatischen Updates von WordPress ausstellen.

Die automatischen Updates sollen dabei helfen, das System auch wenn es lange nicht von einem Admin gewartet wird sicher zu halten. Grundsätzlich ist das auch eine gute Sache, aber es gibt eben auch Anwendungsfälle in denen das nicht gewünscht ist.

Bei WordPress selber gibt es eine gute Übersicht welche Dine überhaupt automatisch aktualisiert werden und wie man einzelne Sachen ausstellen kann. Am einfachsten stellt man den kompletten Auto-Updater aus. Dazu muss man einfach in der wp-config.php die Konstante AUTOMATIC_UPDATER_DISABLED setzen.

define('AUTOMATIC_UPDATER_DISABLED', true);

Das war es dann schon.