Höchste Zeit für HTTPS

Seit Anfang des Jahres haben Website-Betreiber in Deutschland die Pflicht, Daten aus Kontaktformularen verschlüsselt zur übertragen (§ 13 Abs. 7 TMG). Im Klartext heißt das: Wer Daten erhebt und diese ohne SSL überträgt, kann abgemahnt werden.

Was ist HTTPS?

HTTPS (Hypertext Transfer Protocol Secure) sorgt für eine verschlüsselte Verbindung zwischen Website und Besucher. In unserem Fall also zwischen dem Webserver, der die Website bereitstellt, und dem Browser.
Um HTTPS einrichten zu können benötigt man ein Sicherheitszertifikat, SSL-Zertifikat genannt.

Diese Zertifikate werden von einer Zertifizierungsstelle ausgegeben. Dabei gibt es verschiedene „Eskalationsstufen“, also unterschiedlich aufwändige (und teure) Zertifikate:

  • Domain-Validierung
    Für die meisten Websites ist dieses Zertifikat ausreichend, da die Art der Verschlüsselung dieselbe ist wie bei den teureren Zertifikaten.
    Bei diesem Zertifikat wird ausschließlich die Identität des Seitenbetreibers geprüft und mit den Daten der Domainregistrierung abgeglichen. Dadurch steht dieses Zertifikat innerhalb kürzester Zeit bereit.ssl-domain-validierung
  • Organisations-Validierung
    In diesem Fall wird sowohl der Domaininhaber als auch die Organisation dahinter geprüft. Unter anderem geht es darum, ob die Organisation berechtigt ist, die Domain zu führen.
    Die Bereitstellung dauert ein paar Tage, unter anderem deshalb, weil man Belege liefern muss wie z.B. einen Auszug aus dem Handelsregister.
  • Extended Validation SSL
    Das teuerste Zertifikat im Bunde. Es ist aufgrund der hohen Kosten vor allem für Onlineshops oder große Hostinganbieter interessant.
    Um ein solches Zertifikat zu bekommen werden noch weitreichendere Prüfungen vorgenommen. Man erkennt das Zertifikat daran, dass in der Adressleiste nicht nur das grüne Schloss und „https“ zu finden ist sondern der Name des Unternehmens neben dem Schloss ausgeschrieben wird. Klickt man das Schloss an erhält man weitere Informationen:
    ssl-extended-validation

Weiterlesen Höchste Zeit für HTTPS

WordPress-Templates für Übersetzung vorbereiten

Texte in einem WordPress-Theme, die übersetzbar sein sollen, müssen in den Templates gekennzeichnet werden. Dar Code dazu sieht ein wenig ungewöhnlich aus und es gibt viele verschiedene Schreibweisen für diese Funktion. Ich hab eine Weile gebraucht, bis ich mir einen Reim drauf machen konnte.

Der Aufbau eines übersetzbaren Strings ist immer gleich:
__( 'Der zu übersetzende Text', 'text-domain' );

Am Anfang stehen zwei Unterstriche. Die Syntax __() ist ein Kürzel für die translate()-Funktion und setzt das Signal „Achtung, hier gibt’s was zu übersetzen“. Danach kommt der zu übersetzende Textschnipsel, am Ende steht die Textdomain.
An der Stelle, wo die zwei Unterstriche platziert sind, können ganz unterschiedliche Funktionen stehen. Ich möchte vier Varianten vorstellen, die ich im meinem Theme-Alltag am Häufigsten verwende.

Es gibt natürlich noch viel mehr Funktionen. Eine vollständige Übersicht mit ausführlichen Code-Beispielen gibt es im WordPress Theme Handbook.

1. Einfacher Text

esc_html_e('Ich bin ein Text, sonst nix' , 'text-domain');
Damit kennzeichne ich einen einfachen Text.
Im Prinzip würde diese Schreibweise ausreichen:
_e('Ich bin ein Text, sonst nix' , 'text-domain');
Ich bin nicht sicher, wie hoch das Risiko tatsächlich ist, aber theoretisch könnte bei der zweiten Variante ein Übersetzer HTML-Codeschnipsel oder Übleres in die Übersetzung reinschmuggeln. Die Escape-Funktion schmeisst solche Sachen raus.

2. Text innerhalb eines Attributs

Ist ein Text Teil eines Attributs und sitzt z.B. im title-Attribut innerhalb eines Links, dann sieht das Ganze so aus:
esc_attr_e( 'Skip to content', 'text-domain' );
Auch hier ist das Escapen wichtig, damit niemand über die Übersetzung Schadcode einschleusen kann.
Weiterlesen WordPress-Templates für Übersetzung vorbereiten

Was kostet eine WordPress-Seite?

Ein Mensch, nennen wir ihn Paul, braucht eine Webseite und er fragt sich, was das wohl kosten würde. Unter dem Stichwort „WordPress Agentur“ spuckt die Suchmaschine eine lange Liste von Ergebnissen aus. Kleine und große Dienstleister – und ein wildes Durcheinander an Preismodellen.

Eine Agentur bietet ein „WordPress Komplettpaket“ für 600€ an, eine andere spricht von „WordPress Custom Themes“ und will dafür 3.000€ haben. Und bei Themeforest gibt es coole Themes schon für 60€.

„Geht’s noch?“, empört sich Paul. „Ich bin doch nicht blöd und zahle 3.000€, wenn ich das Ganze für 60€ kriegen kann!“

Wie kann das sein, dass für ein und dasselbe Produkt so unterschiedliche Preise aufgerufen werden?

Es steht zwar überall WordPress drauf, aber es ist nicht überall dasselbe drin

Option 1: Selber machen

Auch ein Laie kann sich eine WordPress-Seite ganz bequem über die Benutzeroberfläche (aka WordPress Dashboard) zusammenbauen. Dafür wurde WordPress erfunden. Mit dem Code dahinter kommt man dabei nicht in Berührung.
WordPress selbst und viele gute Themes sind gratis und lassen sich kostenlos herunterladen. Man muss allerdings bereit sein, sich in die Thematik einzuarbeiten. Je nach Vorwissen und Ziel kann das schon mal ein paar Tage dauern.

Schneller geht’s auch mit dem Premium Theme nicht. Im Gegenteil: Diese Themes sind sehr komplexe Konstruktionen, weil sie für jeden etwas bieten müssen. Zusätzlich zu den WordPress Grundlagen muss man sich hier noch in die individuelle Systematik des jeweiligen Themes einarbeiten.

GEEIGNET FÜR
Kleine Projekte mit einfachen Anforderungen.

WENIGER GEEIGNET FÜR
Komplexe Projekte, bei denen Eingriffe in die Theme-Dateien (Templates) nötig sind oder spezielle Plugins gebraucht werden. Natürlich ist auch hier selber basteln möglich und die WordPress Community ist sehr hilfsbereit. Aber das Risiko, eines Tages vor einer kaputten Seite zu sitzen, steigt mit jedem Codeschnipsel, den man irgendwo aufgegabelt, aber nicht so ganz verstanden hat.
Weiterlesen Was kostet eine WordPress-Seite?

WordPress & Vagrant für visuelle Menschen

Letzte Woche habe ich mir angeschaut, wie sich MAMP und Pressmatic im direkten Vergleich so anfühlen. Um das Bild etwas zu erweitern, habe ich mir noch Vagrant angeguckt. 

Beim Zusammenbauen eines Vagrant-WordPress-Workflows haben mir diese beiden Artikel sehr geholfen:

WordPress Development mit VVV (Tuts+)
Setting up a WordPress VVV Workflow (WP Beaches)

In den Artikeln werden alle Schritte zur Installation genau beschrieben.

Optische Oberflächen für VVV und Vagrant

Für mich ist die Arbeit mit dem Terminal deshalb so schwierig, weil ich vor einer „Black Box“ sitze. Erst wenn ich einen passenden Befehl eintippe, spuckt mir das Terminal eine Rückmeldung aus. Weiss ich den Zauberspruch Befehl nicht, sitze ich nur dumm davor und komme nicht weiter.

Spannend fand ich deshalb diese beiden Module:

  1. VVV Dashboard
  2. Vagrant Manager

VVV Dashboard ist eine optische Oberfläche für eine VVV-Installation. Dort kann ich sehen, was sich in meiner Serverumgebung tut und ich kann direkt vom Dashboard aus Aktionen ausführen. Das VVV Dashboard hat mir den Zugang zur Vagrant-Welt sehr erleichtert.
Weiterlesen WordPress & Vagrant für visuelle Menschen

Einen Textauszug per CSS erzeugen

WordPress-Excerpts werden in einer bestimmten Länge ausgegeben, der Default-Wert sind 55 Wörter.  Möchte man diesen Wert ändern, kann man das über den Filter excerpt_length relativ einfach erreichen.

function custom_excerpt_length( $length ) {
return 20;
}
add_filter( ‘excerpt_length’, ‘custom_excerpt_length’ );

Sie auch https://codex.wordpress.org/Plugin_API/Filter_Reference/excerpt_length

Geht das nicht auch per CSS?

So lange ein Projekt noch in der Entwicklung ist, ändert sich die Form von Auszügen/Excerpts häufig. Auch braucht man oft unterschiedliche Varianten von Auszügen: An einer Stelle ist ein längerer Teaser sinnvoll, an anderer Stelle ist der Platz knapp und ein Satz muss reichen.

Da wäre es eigentlich praktisch, wenn man die Darstellung der Exzerpte per CSS steuern könnte. Zumindest bis zu dem Zeitpunkt, an dem feststeht, welche Exzerpt-Varianten in welchem Kontext gebraucht werden.

1. CSS Eigenschaft ‚text-overflow:ellipsis‘

In CSS3 gibt es die Eigenschaft text-overflow. Damit kann man festlegen, was passieren soll, wenn ein Text länger ist als die Box, die ihn umschließt. Der default Wert ist text-overflow:clip, damit wird der Text einfach abgeschnitten. Trägt man statt dessen text-overflow:ellipsis ein, erscheinen am Ende der abgeschnittenen Zeile drei Pünktchen (Ellipsis).

Tolle Sache, dachte ich. Damit müsste man eigentlich auch die Darstellung von Exzerpten auf einer WordPress-Seite per CSS steuern können. Das ist leider nicht ganz einfach.
Weiterlesen Einen Textauszug per CSS erzeugen

Performance-Experiment mit gzip und Browser-Caching

Auf dem WordCamp Nürnberg hat Jan Thiel einen tollen Vortrag zum Theme Performance gehalten: WordPress Performance Mythbuster. Den Vortrag könnt Ihr Euch hier auf wordpress.tv anschauen.

Performance ist ein wichtiges Thema, nicht nur seit Google ein Auge drauf hat. Je langsamer eine Seite lädt, desto schlechter ist die User Experience. Jede Millisekunde zählt, bei mobilen Geräten umso mehr.

Spannend fand ich, wie Jan herausgearbeitet hat, wo denn der Flaschenhals bei den Ladezeiten tatsächlich liegt. Vorsicht Spoiler: Weder die Server-CPU noch der PHP-Code vom WordPress-Core sind hier die Bremse, der PHP Code von Themes und Plugins ist es, der aufs Tempo drückt.

Was logischerweise bedeutet, dass noch’n Plugin Eure Seite nicht unbedingt schneller macht. Auch wenn Performance-Optimierung draufsteht. Ausnahmen bestätigen die Regel.

Das Experiment

Ich hab mir mal zwei Sachen vorgenommen, die Jan in seinem Vortrag erwähnt hat, mit denen man der Netzialisten-Seite Beine machen kann. Ich hab dazu das Google Page Speed Tool genutzt, obwohl ich ein etwas gespaltenes Verhältnis dazu habe: Die Angaben dort muss man mit Vorsicht geniessen und immer die Verhältnismäßigkeit im Auge behalten. Beispiel: Man kann schon „Punktabzug“ kriegen, wenn ein einziges 32KB-Bild nicht optimiert ist.

Die beiden Techniken, die ich mir angeschaut habe, sind:

  1. gzip -Komprimierung
  2. Browser-Caching

Weiterlesen Performance-Experiment mit gzip und Browser-Caching

Google Fonts über den eigenen Server einbinden

Es gibt verschiedene Methoden, um Google Fonts in eine Webseite einzubinden. Die klassische Methode ist, die Schriften über einen Link in der header.php oder – besser – über die functions.php ins Theme einzubinden. Ellen Bauer hat einen ausführlichen Artikel dazu geschrieben: Google Fonts in WordPress Themes

Bei dieser Methode liegen die Schriften auf den Google-Servern und werden über einen Link auf meine Webseite geholt. Wird meine Seite geladen, schickt sie eine Anfrage an den Google Server und der liefert dann die Schriften aus. Davon merkt man in der Regel nicht viel. Aber es bleibt die Tatsache, dass eine Abfrage passiert und das dauert ein paar Millisekunden.

Je nach der Qualität der Datenverbindung kann es auch passieren, dass die Schriften nicht schnell genug ausgeliefert werden. Dann erscheinen alle Texte plötzlich in Arial oder Times.
Auch Firewalls können ein Problem darstellen – in manchen Firmen gelten so strenge Regeln, dass die Mitarbeiter keine Google Fonts zu sehen kriegen.

Google Fonts herunterladen und Webfont erzeugen

Aus diesen Gründen bin ich in letzter Zeit dazu übergegangen, Google Webfonts nicht mehr per Link einzubinden, sondern direkt auf den Sever zu laden, auf dem auch das WordPress-Theme liegt. Ich gehe davon aus, dass das rechtlich kein Problem ist, denn die Google Webfonts haben eine SIL Open Font License, die das Herunterladen erlaubt.
Weiterlesen Google Fonts über den eigenen Server einbinden

Flexbox jetzt! IE8 und IE9 und die Bremse im Kopf

Das Web entwickelt sich im Sauseschritt. Heute ist SVG das Grafik-Format der Wahl und die Flexbox-Methode bringt uns endlich flexible CSS-Raster ohne semantische Verrenkungen. Wenn da nicht die alten Browser wären.

So lange wir Code vorhalten müssen, den auch alte Browser lesen können, haben wir ein Problem. Wir müssten eine Menge Sachen doppelt schreiben, eine Version für moderne Browser und eine für die alten Herrschaften.

Das ist natürlich mühsam. Bevor ich mir die doppelte Arbeit mache, bleibe ich doch lieber bei den altbewährten Methoden. Floats und clearfixes können neue und alte Browser lesen. Wegen dem bisschen Semantik lohnt sich der Aufwand nicht.

Ist das nur eine bequeme Ausrede oder ist da was dran?
Weiterlesen Flexbox jetzt! IE8 und IE9 und die Bremse im Kopf

Tipps für eine barrierefreie Webseite

Wie viele Leute verwenden wohl einen Screenreader um diese Webseite zu betrachten? Der Anteil dürfte im niedrigen einstelligen Prozentbereich liegen. Warum also so viel Aufwand für eine so kleine Benutzergruppe?
Weil es nicht um Screenreader geht. Sondern um Usability.

Wer profitiert von einer barrierefreien Webseite?

  • Menschen mit einer Sehbehinderung, die starke Kontraste auf ihrem Bildschirm brauchen
  • Menschen, die im hellen Sonnenlicht eine Adresse auf ihrem Smartphone lesen wollen
  • Menschen, die per Tastatur statt Maus navigieren, weil sie keine Arme haben
  • Menschen, die per Tastatur statt Maus navigieren, weil sie Rheuma in den Händen haben oder ihr rechter Arm vorübergehend einen Gipsverband hat
  • Menschen, die eine geistige Behinderung haben
  • Menschen mit einem Hochschulabschluss, deren Muttersprache nicht Deutsch ist
  • Menschen, die eine Aufmerksamkeitsstörung haben und sich schlecht konzentrieren können
  • Menschen, die nach einem langen Arbeitstag müde sind und sich schlecht konzentrieren können
  • Alte Menschen, die unsicher sind und leicht die Orientierung auf der Webseite verlieren
  • Junge Menschen, die unsicher sind und leicht die Orientierung auf der Webseite verlieren

Weiterlesen Tipps für eine barrierefreie Webseite