Entwicklung mit WordPress

Entwicklung mit WordPress

Tipps & Tricks für das Entwickeln
mit und an WordPress

Inpsyde GmbH · Frank Bültge · 2012/02/28

Cover Image

WordPress Core

  • define( 'WP_DEBUG', TRUE ); PHP Error und Warnings sehen, Notices for abgekündigte Funktionen triggern
  • define( 'SAVEQUERIES', TRUE );
  • define( 'SCRIPT_DEBUG', TRUE );

Einfach sehen, was schief geht
PHP Notices sehen
und andere Dinge, die sonst verborgen sind

Background Scribble

WordPress Plugins

Empfehlungen aus dem täglichen Umfeld
nicht vollständig und subjektiv

Background Scribble

Helper

  • Xdebug A PHP Erweiterung für kraftvoll debugging
  • Webgrind an Xdebug profiling web frontend
  • Github ein webbasierter Hosting-Dienst für Software-Entwicklungsprojekte
  • bitbucket beide bieten Git als Basis
  • Codepad Pastebin for PHP
  • Tinkerbin Spielplatz für HTML, JS, CSS - viel JS Libs
  • jsFiddle Spiel mit HTML, JS, CSS

Als Empfehlung zu sehen, der Markt ist groß und veränderlich

Background Scribble

Best Practices

Nimm keine Veränderungen am Core vor.

  • Autoupdate
  • Es existieren viele Haken und Ösen für den Eingriff
  • Auch hässliche Hacks sind besser

Präfixe helfen

  • Vermeide Kollisionen; Namespaces, Klassen, Funktionen mit Präfixen versehen
Background Scribble

Best Practices #2

Coding Standards haben einen Grund

  • Viele Menschen arbeiten mit dem Code
  • Dienen der Lesbarkeit und Verständlichkeit, gemeinsame Sprache
  • Nutze Tabs, keine Leerzeichen und erhalte die Flexibilität auf den Clients
  • underscore_for_functions
  • Capitalize_Class
  • use-hyphens-to-separate-words-in-files.php
Background Scribble

Hooks & APIs

Nutze die richtigen Hooks und Filter

  • plugins_loaded
  • wp_enqueue_scripts
  • after_setup_theme

Nutze APIs; erfinde das Rad nicht neu

  • WP_HTTP Class für Remote Requests
    • wp_remote_get()
    • wp_remote_request()
    • wp_remote_head()
Background Scribble

Sicherheit

Sicherheit - einen Zustand, der frei von unvertretbaren Risiken
der Beeinträchtigung ist oder als gefahrenfrei angesehen wird.

  • PHP & WordPress Coding Standards einhalten
  • PHP Sichheitsgrundlagen nutzen
  • Verantwortung
  • Prüfung
  • Bewusstsein
  • Performance-Bewusstsein
Background Scribble

Sicherheit – Validate

Validiere Daten, folge dem Grundsatz des Whitelist-Konzeptes
Bereinige, wass der User sendet:

  • sanitize_text_field()clear all HTML
  • intval()get integer value of var
  • wp_filter_post_kses()sanitize for allowed HTML tags and attributes
  • sanitize_key()lowercase alphanumeric characters, dashes and underscores
  • sanitize_title()ähnlich, aber mächtiger und flexibler
Background Scribble

Sicherheit – Escape

Nutze diverse Escape Funktionen zum Schutz der HTML

  • esc_html()escape for data within HTML, checks for invalid UTF-8
  • esc_attr()escape for HTML attributes, checks for invalid UTF-8
  • esc_js()escape single quotes, htmlspecialchar ” < > &, fix line endings
  • esc_textarea()escapes data for use in a textarea
  • esc_url()removes a bunch of invalid characters from your URL, makes it good
Background Scribble

Sicherheit – Nonces

Sicherstellung, dass kommt, was kommen soll

  • Nonces schaffen Sicherheit (XSRF)
  • Nonces prüfen die Absicht der Nutzer (Authentifizierung)
  • Nonces sind temporär
  • Nonces sind an Nutzer, Handlungen oder Verweise gebunden
Background Scribble

Sicherheit – SQL

SQL Nutzung in WordPress = $wpdb->prepare()

  • Richtiges Escapen bei SQL

Achte auf die Verwendung von %s und %d und stelle sicher, dass es sich um Strings oder Zahlen handelt. Anführungszeichen (Quotes) werden automatisch ergänzt.

Background Scribble

Optimieren

Nutze die Query

  • query_posts()Nicht nutzen, nur wenn die Main Query geändert werden muss. Viele globale Variablen können zu Problemen führen.
  • get_posts()Die Argumente sind gleich, liefert ein Array und kann überall verwendet werden.
  • WP_QueryDie Klasse hinter den Kulissen, diese man nutzt, wenn eigene Objekte benötigt werden. Komplex, weniger Restriktionen und überall nutzbar.
  • $query->is_main_query()Prüfe, ob es die Main Query ist.
  • wp_reset_postdata(), wp_reset_query()Resets
Background Scribble

Caching

Speichere excessive Daten

  • Zwischenspeicherung sind einfach
  • Abfragen > 200ms sind ein Anhaltspunkt für die Entscheidung zum Cachen

WordPress Caches

  • Transient Data Zeitabhängiges Speichern in der Datenbank
  • Object Cache Object Caching via Backend, z.B. Memcache oder APC
  • Options dauerhafte Speicherung in _options
Background Scribble

Fragen & Hinweise ?

WordPress lernen & verstehen · EduPress

Für Menschen · Seien Sie begeistert und Sie werden begeistern!

Frank Bültge · Inpsyde GmbH

Danke!

Background Scribble