Top Banner
David Decker · deckerweb.de · WP Camp 2012 Meine ersten 12 Monate als Plugin-Entwickler für WordPress Session:
26

Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

May 13, 2015

Download

Technology

David Decker

Meine Erfahrungen mit dem Erstellen von Plugins für WordPress - was habe ich gelernt, worauf kommt es an? -- Hooks & Filter, Coding Standards, etc. -- ein bisschen aus dem Nähkästchen geplaudert. Vielleicht hilfreich für alle, die auch bei WordPress.org Plugins einstellen wollen, oder sich überhaupt mal an diese Materie heranwagen wollen...
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Meine ersten 12Monate alsPlugin-Entwicklerfür WordPress

Session:

Page 2: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Beispiel DECKERWEBErstes Plugin live am 1. Juli 2011

Seitdem insgesamt 26 Plugins

Bis gestern 183.096 Downloads! - DANKE :)

Plugins nach Einsatzgebiet:bbPress 2.x: 3

BuddyPress: 1

Easy Digital Downloads: 2

Gravity Forms: 1

Thesis, Xtreme One, iThemes: je 1

WordPress generell: 2

Genesis Framework: 9

WooCommerce: 3

Jigoshop: 2

Page 3: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Beispiel DECKERWEBUrsachen:

Wollte tiefer in WP-Materie eindringen

Hatte einige Ideen für Mini-Plugins

Konkreter Anlass:Anfrage eines Freundes nach einer Lösung

Diese Lösung öffentlich zugänglich machen!

Generell:Wissen teilen

Wo steht man?

Open Source voranbringen

?

Page 4: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Beispiel DECKERWEBSehr viele Downloads & Nutzer - unerwartet!

Viel positives Feedback, einige Kritik!

2 Kollaborationen (Dev4Press; Daniel Hüsken)

Einige Forks... :)

Feature bei WPMU.org

Erwähnt in Session eines U.S. WordCamps

Einige neue Übersetzungen (wächst)

Generelle Anfragen (Spitzenreiter: Woo & Jigo...)

Page 5: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

ZieleReizvolle Aufgabe?

Lernen, weiterbilden, ausprobieren...

Wissen teilen!

Lösungen teilen!

Reputation verbessern

Der Öffentlichkeit stellen - Wo steht man?

WordPress bzw. Open Source Contributor werden

DEINE Gründe?

?

Page 6: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Lieber sein lassen, falls......man gar keine Zeit für Support hat

...nicht kritikfähig

...“SVN“ gar nicht geht :)

...es schon 500 Plugins der gleichen

Geschmacksrichtung gibt...

...Geld verdienen wichtiger ist (dann: Marktplatz

wechseln...!)

WEITERE Gründe?

!

Page 7: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

GrundkonzeptEigentliche Funktionalität und Typ des Plugins

Eigenständiges Plugin?

Plugin-Plugin?

Theme-Plugin?

Functionality-/ Site-Plugin? (...MU-Plugin?)

(Inline-) Dokumentation (ggf. gesondert für Entwickler)

Lokalisierung! ...und Management!

Bereit für Support?

Evtl. Branding? / Evtl. „Vermarktung“?

Bedingungen des Repositories bzw. Marktplatzes?

Page 8: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Vorbereitung - AufbauHauptdatei mit Plugin-Kopf (Header, Meta, Lizenz)

Funktionen?

Klasse - Methoden?

Variablen

Konstanten

Querschnittsaufgabe: Lokalisierung

WordPress.org: readme.txt (generell sinnvoll!)

Andere Repositories/ Marktplätze?

Page 9: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

(Datei-) OrganisationKlare Ordnung aller Dateien/ Assets

Saubere Benennung aller Dateien

Alle benötigten Dateien/ Bibliotheken im Plugin!../wp-content/plugins/

/wpcamp-test-plugin//css//images//includes/

admin-settings.php/js//languages/readme.txtwpcamp-test-plugin.php

Textdomain?= Plugin-Slug!('wpcamp-test-plugin')

Hauptdateiname?= Plugin-Slug!(wpcamp-test-plugin.php)

Page 10: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Grundprinzipien IAlles mit Präfix bitte!//Funktionen:function ddw_bptb_init() {

// inhalt}

//Konstanten:define( 'BPTB_PLUGIN_BASEDIR', ... );

//Variablen:$bptb_lang_dir

//Klassenclass DDW_BuddyPress_Toolbar {

// inhalt}

Bewährt:InitialenPlugin-Name abgekürzto. Name der Agentur

abgekürzt...

Ziele:Einzigartig!Keine Kollisionen im

PHP-Namensraum

Page 11: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Grundprinzipien IICode nur laden, wenn er gebraucht wird!

is_admin(), is_multisite(), is_network_admin() usw.

Code splitten (Optionen, eigentl. Formulare, etc.)

CSS, Skripte einhängen/ „enqueue“Backend/ Frontend beachten

jQuery nur von WordPress verwendenNUR laden, wo es gebraucht wird, NICHT überall

Abhängigkeiten beachten!

Standardkonformer Code = performant und konfliktfrei

Page 12: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Modulare Plugins

Nahtloses zusammenarbeiten mit WordPress sowie

andere Plugins und Themes/ Frameworks

Niemals den Core berühren! (WP, Plugins, Frameworks/ Themes)

Hilf Dir selber ...und Deinen Benutzern!

„Extensible, or modular code, is code that can be modified,interacted with, added to, or manipulated . . . all without evermodifying the core code base.“

„Good extensible code makes it exceptionally easy to expandyour own code base.“

--Pippin Williamson, pippinsplugins.com

Page 13: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Modulare PluginsHooks und Filter == WordPress-Konzept!apply_filters()

Einen Filter-Hook einrichten, der via add_filter() angesprochen wirdadd_filter()

(Text-) Strings oder sonstige Daten über bestehenden "Hook" ÄNDERNhas_filter() – Prüfen, ob ein Filter existiert

do_action()Einen Einhängepunkt (Hook) einrichten, der alle eingehängtenFunktionen via add_action() ausführt

add_action()Eine Funktion in einen bestehenden Hook einhängen

remove_action()Eine Funktion aus einem bestehenden Hook aushängen

has_action()Erlaubt Prüfung, ob eine bestehende Aktion registriert wurde

Knowyour

hooks!

Page 14: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Modulare PluginsErweiterbarer Code

„Manipularer“ Code, d.h. filterbar

Funktionen, CSS-Stile, JS-Skripte lassen sich

aushängen, eigene einhängen

(Übersetzungs-) Strings lassen sich einfach ändern

(Filter!)

Parameter aus Arrays lassen sich einfach anpassen,

ergänzen (Filter!)

WordPressGravity Forms

EDDWoo/ JigoGenesis

...

Page 15: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

SicherheitESCAPE-Funktionen (HTML, Attribute, URLs)

SANITIZING-Funktionen - Benutzerein- und

Ausgaben absichern („heilen“)

Betrifft:Admin-Optionen

Alle (Admin-) Formulare, Eingaben, Ausgaben

URLs! (bis hin zu WP-eigenen Permalinks etc.)

Übersetzungs-Strings (Stichwort: Filter!)

Der Codex hilft!codex.wordpress.org

!

Page 16: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Coding StandardsDanke, Gary Jones! (@GaryJ)

Ohne „Regeln“ geht es auch hier nicht!

Siehe: „Core Contributor Handbook“

PHP:http://make.wordpress.org/core/handbook/coding-standards/#php

CSS:http://make.wordpress.org/core/handbook/coding-standards/css/

Page 17: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Coding StandardsLesbar

Verstehbar

Erweiterbar

Transportierbar

Teamarbeit

Page 18: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Best PracticesPlugin: Modular arbeiten (Know your hooks :)

Titel/ Slug bei WordPress.org checken!

readme.txt Validator (Markdown-Format)

Doku: alles beschreiben, was geht

Doku: alle Hooks, Filter dokumentieren

Doku: FAQ-Bereich? (vorsorglich...)

Sprachdatei-Verzeichnis filterbar machen

/wp-admin/ Plugin-Suche beachten

Page 19: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Wichtige Werkzeuge:define( 'WP_DEBUG', true ); (wp-config.php)

Testen! Testen! Testen!

Am besten auf einer live-Umgebung

Multisite nicht vergessen! (Netzwerkweit aktivieren)

WP-Version? PHP-Version? Serverumgebung?

Plugins:

Debug Bar

WP Admin Error Handler

User Switching

Rewrite Rules Inspector

Developer

WordPress Beta Tester

Codestyling Localization

GlotPress (kein Plugin!)

Page 20: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Plugin live, was nun?Downloads, Downloads, Downloads...

Support, Support, Support!

Updates, Updates, Updates... (Bugs, Bugs, Bugs...)

Nach 3 Monaten? Nach 6 Monaten...?

(Stichwort: Code Refactoring)

Dokumentation live schalten & verbessern

Evtl. eigenes Support-Forum (mehrsprachig?)

Neue Ideen ;-)

Page 21: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Würde ich es wieder tun?JA, auf jeden Fall! ;-)

Unverzichtbare (Code-) Erkenntnisse und

(menschliche) Erfahrungen!

In einem Jahr mehr über WordPress gelernt, als in 5

Jahren davor!

Allerdings würde ich den Start besser vorbereiten...

Und sonst? -- Die WordPress Community rockt! :)

Page 22: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

readme.txt Validator:

http://wordpress.org/extend/plugins/about/validator/

Page 23: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

SVN - Subversion:

http://wordpress.org/extend/plugins/about/svn/

Page 24: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

Verwendete Quellen:http://wordpress.org/extend/plugins/about/ (Dev Center)

http://wordpress.org/extend/plugins/about/faq/

http://wordpress.org/extend/plugins/about/validator/ (redme.txt Check)

http://pippinsplugins.com/lets-talk-extensible-code/

http://pippinsplugins.com/modular-plugins-presentation-from-wordcamp-

kansas-city-2012/

http://make.wordpress.org/core/handbook/coding-standards/#php

http://make.wordpress.org/core/handbook/coding-standards/css/

http://www.dev4press.com/2011/tutorials/wordpress/practical/how-to-

optimize-plugin-loading/

Page 25: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

David Decker

@deckerweb

+David Decker

deckerweb.de

profiles.wordpress.org/daveshine

translate.wpautobahn.com

Danke! Fragen jetzt!Folien unter: deckerweb.de/wpcamp2012

plus: slideshare.net/deckerweb

Page 26: Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin

David Decker · deckerweb.de · WP Camp 2012

/** Call for break and add next session */add_action( 'wpcamp_berlin_2012', 'wpc_next_session_planning' )function wpc_next_session_planning() {

if ( is_break( array( 10min, coffee, wc ) ) ) {

wpcamp_do_next_session();echo __( 'Enjoy the break', 'wpcamp' );

} else {

wpcamp_do_celebrate_community();echo __( 'Enjoy the conversation', 'wpcamp' );

}

}