SlideShare ist ein Scribd-Unternehmen logo
Session:

                            Meine ersten 12
                            Monate als
                            Plugin-Entwickler
                            für WordPress
David Decker · deckerweb.de · WP Camp 2012
Beispiel DECKERWEB
  Erstes Plugin live am 1. Juli 2011
  Seitdem insgesamt 26 Plugins
  Bis gestern 183.096 Downloads! - DANKE :)
  Plugins nach Einsatzgebiet:
   WordPress generell: 2                bbPress 2.x: 3
   Genesis Framework: 9                 BuddyPress: 1
   WooCommerce: 3                       Easy Digital Downloads: 2
   Jigoshop: 2                          Gravity Forms: 1
                                        Thesis, Xtreme One, iThemes: je 1

David Decker · deckerweb.de · WP Camp 2012
Beispiel DECKERWEB




                                                   ?
  Ursachen:
      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

David Decker · deckerweb.de · WP Camp 2012
Beispiel DECKERWEB
  Sehr 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...)

David Decker · deckerweb.de · WP Camp 2012
?
Ziele
  Reizvolle 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?

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?

David Decker · deckerweb.de · WP Camp 2012
Grundkonzept
  Eigentliche 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?

David Decker · deckerweb.de · WP Camp 2012
Vorbereitung - Aufbau
  Hauptdatei mit Plugin-Kopf (Header, Meta, Lizenz)
  Funktionen?
  Klasse - Methoden?
  Variablen
  Konstanten
  Querschnittsaufgabe: Lokalisierung
  WordPress.org: readme.txt (generell sinnvoll!)
  Andere Repositories/ Marktplätze?

David Decker · deckerweb.de · WP Camp 2012
(Datei-) Organisation
  Klare Ordnung aller Dateien/ Assets
  Saubere Benennung aller Dateien
  Alle benötigten Dateien/ Bibliotheken im Plugin!
  ../wp-content/plugins/
     /wpcamp-test-plugin/                    Textdomain?
         /css/                               = Plugin-Slug!
         /images/                            ('wpcamp-test-plugin')
         /includes/
            admin-settings.php               Hauptdateiname?
         /js/                                = Plugin-Slug!
         /languages/                         (wpcamp-test-plugin.php)
         readme.txt
         wpcamp-test-plugin.php


David Decker · deckerweb.de · WP Camp 2012
Grundprinzipien I
  Alles mit Präfix bitte!
 //Funktionen:                               Bewährt:
 function ddw_bptb_init() {                   Initialen
     // inhalt
                                              Plugin-Name abgekürzt
 }
                                              o. Name der Agentur
 //Konstanten:                               abgekürzt...
 define( 'BPTB_PLUGIN_BASEDIR', ... );
                                             Ziele:
 //Variablen:
                                              Einzigartig!
 $bptb_lang_dir
                                              Keine Kollisionen im
 //Klassen                                   PHP-Namensraum
 class DDW_BuddyPress_Toolbar {
     // inhalt
 }



David Decker · deckerweb.de · WP Camp 2012
Grundprinzipien II
  Code 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 verwenden
      NUR laden, wo es gebraucht wird, NICHT überall
      Abhängigkeiten beachten!
Standardkonformer Code = performant und konfliktfrei


David Decker · deckerweb.de · WP Camp 2012
Modulare Plugins
      „Extensible, or modular code, is code that can be modified,
      interacted with, added to, or manipulated . . . all without ever
      modifying the core code base.“

      „Good extensible code makes it exceptionally easy to expand
      your own code base.“
                           --Pippin Williamson, pippinsplugins.com


  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!

David Decker · deckerweb.de · WP Camp 2012
Modulare Plugins                                               Know
                                                                your
                                                               hooks!
  Hooks und Filter == WordPress-Konzept!
  apply_filters()
    Einen Filter-Hook einrichten, der via add_filter() angesprochen wird
  add_filter()
    (Text-) Strings oder sonstige Daten über bestehenden "Hook" ÄNDERN
  has_filter() – Prüfen, ob ein Filter existiert

  do_action()
     Einen Einhängepunkt (Hook) einrichten, der alle eingehängten
     Funktionen 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

David Decker · deckerweb.de · WP Camp 2012
Modulare Plugins                              WordPress
                                             Gravity Forms
                                                 EDD
                                               Woo/ Jigo
  Erweiterbarer Code                            Genesis
                                                   ...
  „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!)

David Decker · deckerweb.de · WP Camp 2012
Sicherheit
  ESCAPE-Funktionen (HTML, Attribute, URLs)
  SANITIZING-Funktionen - Benutzerein- und
Ausgaben absichern („heilen“)
                                                            !
                                                  Der Codex hilft!
  Betrifft:                                       codex.wordpress.org


      Admin-Optionen
      Alle (Admin-) Formulare, Eingaben, Ausgaben
      URLs! (bis hin zu WP-eigenen Permalinks etc.)
      Übersetzungs-Strings (Stichwort: Filter!)



David Decker · deckerweb.de · WP Camp 2012
Coding Standards
  Danke, 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/




David Decker · deckerweb.de · WP Camp 2012
Coding Standards
  Lesbar
  Verstehbar
  Erweiterbar
  Transportierbar
  Teamarbeit




David Decker · deckerweb.de · WP Camp 2012
Best Practices
  Plugin: 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

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:                             Rewrite Rules Inspector
     Debug Bar                         Developer
     WP Admin Error Handler            WordPress Beta Tester
     User Switching                    Codestyling Localization
                                       GlotPress (kein Plugin!)


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 ;-)

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! :)



David Decker · deckerweb.de · WP Camp 2012
readme.txt Validator:




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



David Decker · deckerweb.de · WP Camp 2012
SVN - Subversion:

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




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/


David Decker · deckerweb.de · WP Camp 2012
Danke! Fragen jetzt!
 Folien unter:           deckerweb.de/wpcamp2012
                         plus: slideshare.net/deckerweb

                    David Decker
                    @deckerweb
                    +David Decker
                    deckerweb.de
                    profiles.wordpress.org/daveshine
                    translate.wpautobahn.com

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' );

     }

}




David Decker · deckerweb.de · WP Camp 2012

Weitere ähnliche Inhalte

Andere mochten auch

IVA
IVAIVA
Was dem (Informations-)System Bildung fehlt: Die Ansichten eines Technikliefe...
Was dem (Informations-)System Bildung fehlt: Die Ansichten eines Technikliefe...Was dem (Informations-)System Bildung fehlt: Die Ansichten eines Technikliefe...
Was dem (Informations-)System Bildung fehlt: Die Ansichten eines Technikliefe...
Bernd Simon
 
Almacenamientos virtuales
Almacenamientos virtualesAlmacenamientos virtuales
Almacenamientos virtuales
429CTO
 
Revista ubisoft
Revista ubisoftRevista ubisoft
Revista ubisoft
Martin Torres Ramirez
 
El aborto
El abortoEl aborto
El aborto
mauricio147
 
Warum freelancer
Warum freelancerWarum freelancer
Warum freelancer
AnaDines
 
Criminalidad y violencia juvenil en el Perú
Criminalidad y violencia juvenil en el PerúCriminalidad y violencia juvenil en el Perú
Criminalidad y violencia juvenil en el Perú
Secretaria Nacional de la Juventud
 
Sage CRM – Übersicht und Auszeichnungen der Analysten
Sage CRM – Übersicht und Auszeichnungen der AnalystenSage CRM – Übersicht und Auszeichnungen der Analysten
Sage CRM – Übersicht und Auszeichnungen der Analysten
Custemotion Unternehmensberatung UG (haftungsbeschränkt)
 
Ntic en la educación, en la empresa y en la sociedad
Ntic en la educación, en la empresa y en la sociedadNtic en la educación, en la empresa y en la sociedad
Ntic en la educación, en la empresa y en la sociedad
Vivis Rojas
 
El maravilloso mundo de los animales
El maravilloso mundo de los animalesEl maravilloso mundo de los animales
El maravilloso mundo de los animales
Mario Abate Liotti Falco
 
Glosario de terminos
Glosario de terminosGlosario de terminos
Glosario de terminos
Deximar Boza
 
Diapositivas1
Diapositivas1Diapositivas1
Diapositivas1
Aleejandro Riiascoz
 
Steuerung von Internetagenturen internet-briefing
Steuerung von Internetagenturen internet-briefingSteuerung von Internetagenturen internet-briefing
Steuerung von Internetagenturen internet-briefing
Walter Schärer
 
Das Wellnesshotel Feldhof Beauty-Prospekt
Das Wellnesshotel Feldhof Beauty-ProspektDas Wellnesshotel Feldhof Beauty-Prospekt
Das Wellnesshotel Feldhof Beauty-Prospekt
Hotel Feldhof
 
10 principales causas principales causas de muerte en mexico
10  principales causas principales causas de muerte en mexico10  principales causas principales causas de muerte en mexico
10 principales causas principales causas de muerte en mexico
Marco Hernandez
 
SeHF 2013 | Kosten und Risiken der Archivanbindung minimieren dank zertifizie...
SeHF 2013 | Kosten und Risiken der Archivanbindung minimieren dank zertifizie...SeHF 2013 | Kosten und Risiken der Archivanbindung minimieren dank zertifizie...
SeHF 2013 | Kosten und Risiken der Archivanbindung minimieren dank zertifizie...
Swiss eHealth Forum
 
Carácter y mejora personal
Carácter y mejora personalCarácter y mejora personal
Carácter y mejora personal
Centro Universitario Villanueva
 
Perrito
PerritoPerrito
Perrito
Samy Emox
 
CreditPlus Kriterien bei der Kreditvergabe
CreditPlus Kriterien bei der KreditvergabeCreditPlus Kriterien bei der Kreditvergabe
CreditPlus Kriterien bei der Kreditvergabe
Creditplus Bank AG
 
Transistores de MAX HIDALGO CHAVEZ
Transistores de MAX HIDALGO CHAVEZTransistores de MAX HIDALGO CHAVEZ
Transistores de MAX HIDALGO CHAVEZ
Max Aldo Hidalgo Chavez
 

Andere mochten auch (20)

IVA
IVAIVA
IVA
 
Was dem (Informations-)System Bildung fehlt: Die Ansichten eines Technikliefe...
Was dem (Informations-)System Bildung fehlt: Die Ansichten eines Technikliefe...Was dem (Informations-)System Bildung fehlt: Die Ansichten eines Technikliefe...
Was dem (Informations-)System Bildung fehlt: Die Ansichten eines Technikliefe...
 
Almacenamientos virtuales
Almacenamientos virtualesAlmacenamientos virtuales
Almacenamientos virtuales
 
Revista ubisoft
Revista ubisoftRevista ubisoft
Revista ubisoft
 
El aborto
El abortoEl aborto
El aborto
 
Warum freelancer
Warum freelancerWarum freelancer
Warum freelancer
 
Criminalidad y violencia juvenil en el Perú
Criminalidad y violencia juvenil en el PerúCriminalidad y violencia juvenil en el Perú
Criminalidad y violencia juvenil en el Perú
 
Sage CRM – Übersicht und Auszeichnungen der Analysten
Sage CRM – Übersicht und Auszeichnungen der AnalystenSage CRM – Übersicht und Auszeichnungen der Analysten
Sage CRM – Übersicht und Auszeichnungen der Analysten
 
Ntic en la educación, en la empresa y en la sociedad
Ntic en la educación, en la empresa y en la sociedadNtic en la educación, en la empresa y en la sociedad
Ntic en la educación, en la empresa y en la sociedad
 
El maravilloso mundo de los animales
El maravilloso mundo de los animalesEl maravilloso mundo de los animales
El maravilloso mundo de los animales
 
Glosario de terminos
Glosario de terminosGlosario de terminos
Glosario de terminos
 
Diapositivas1
Diapositivas1Diapositivas1
Diapositivas1
 
Steuerung von Internetagenturen internet-briefing
Steuerung von Internetagenturen internet-briefingSteuerung von Internetagenturen internet-briefing
Steuerung von Internetagenturen internet-briefing
 
Das Wellnesshotel Feldhof Beauty-Prospekt
Das Wellnesshotel Feldhof Beauty-ProspektDas Wellnesshotel Feldhof Beauty-Prospekt
Das Wellnesshotel Feldhof Beauty-Prospekt
 
10 principales causas principales causas de muerte en mexico
10  principales causas principales causas de muerte en mexico10  principales causas principales causas de muerte en mexico
10 principales causas principales causas de muerte en mexico
 
SeHF 2013 | Kosten und Risiken der Archivanbindung minimieren dank zertifizie...
SeHF 2013 | Kosten und Risiken der Archivanbindung minimieren dank zertifizie...SeHF 2013 | Kosten und Risiken der Archivanbindung minimieren dank zertifizie...
SeHF 2013 | Kosten und Risiken der Archivanbindung minimieren dank zertifizie...
 
Carácter y mejora personal
Carácter y mejora personalCarácter y mejora personal
Carácter y mejora personal
 
Perrito
PerritoPerrito
Perrito
 
CreditPlus Kriterien bei der Kreditvergabe
CreditPlus Kriterien bei der KreditvergabeCreditPlus Kriterien bei der Kreditvergabe
CreditPlus Kriterien bei der Kreditvergabe
 
Transistores de MAX HIDALGO CHAVEZ
Transistores de MAX HIDALGO CHAVEZTransistores de MAX HIDALGO CHAVEZ
Transistores de MAX HIDALGO CHAVEZ
 

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

WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 BerlinWordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
David Decker
 
Genesis Framework - WordCamp Deutschland 2011 Köln
Genesis Framework - WordCamp Deutschland 2011 KölnGenesis Framework - WordCamp Deutschland 2011 Köln
Genesis Framework - WordCamp Deutschland 2011 Köln
David Decker
 
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...
David Decker
 
Web460 ppt-de-jul-wi-web-all-2020
Web460 ppt-de-jul-wi-web-all-2020Web460 ppt-de-jul-wi-web-all-2020
Web460 ppt-de-jul-wi-web-all-2020
HansruediDbeli1
 
Dnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsessionDnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsession
Oliver Busse
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit Wordpress
Blogwerk AG
 
Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?
MT AG
 
Drupal Multisite und Subversion
Drupal Multisite und SubversionDrupal Multisite und Subversion
Drupal Multisite und Subversion
Drupalist
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
Joachim Baumann
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
Christian Colbach
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
Oliver Zeigermann
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
gedoplan
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Torsten Kleiber
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
dzuvic
 
Von Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenVon Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 Minuten
QAware GmbH
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
OPITZ CONSULTING Deutschland
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions
 
Akzeptanz-Test getriebene Produktentwicklung
Akzeptanz-Test getriebene ProduktentwicklungAkzeptanz-Test getriebene Produktentwicklung
Akzeptanz-Test getriebene Produktentwicklung
Michael Brandt
 
Wie wird mein Code testbar?
Wie wird mein Code testbar?Wie wird mein Code testbar?
Wie wird mein Code testbar?
David Völkel
 
Lokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEVLokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEV
Peter Kraume
 

Ähnlich wie Meine ersten 12 Monate als Plugin-Entwickler für WordPress - WP Camp 2012 Berlin (20)

WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 BerlinWordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
 
Genesis Framework - WordCamp Deutschland 2011 Köln
Genesis Framework - WordCamp Deutschland 2011 KölnGenesis Framework - WordCamp Deutschland 2011 Köln
Genesis Framework - WordCamp Deutschland 2011 Köln
 
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...
 
Web460 ppt-de-jul-wi-web-all-2020
Web460 ppt-de-jul-wi-web-all-2020Web460 ppt-de-jul-wi-web-all-2020
Web460 ppt-de-jul-wi-web-all-2020
 
Dnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsessionDnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsession
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit Wordpress
 
Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?
 
Drupal Multisite und Subversion
Drupal Multisite und SubversionDrupal Multisite und Subversion
Drupal Multisite und Subversion
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
Von Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenVon Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 Minuten
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
Akzeptanz-Test getriebene Produktentwicklung
Akzeptanz-Test getriebene ProduktentwicklungAkzeptanz-Test getriebene Produktentwicklung
Akzeptanz-Test getriebene Produktentwicklung
 
Wie wird mein Code testbar?
Wie wird mein Code testbar?Wie wird mein Code testbar?
Wie wird mein Code testbar?
 
Lokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEVLokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEV
 

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

  • 1. Session: Meine ersten 12 Monate als Plugin-Entwickler für WordPress David Decker · deckerweb.de · WP Camp 2012
  • 2. Beispiel DECKERWEB Erstes Plugin live am 1. Juli 2011 Seitdem insgesamt 26 Plugins Bis gestern 183.096 Downloads! - DANKE :) Plugins nach Einsatzgebiet: WordPress generell: 2 bbPress 2.x: 3 Genesis Framework: 9 BuddyPress: 1 WooCommerce: 3 Easy Digital Downloads: 2 Jigoshop: 2 Gravity Forms: 1 Thesis, Xtreme One, iThemes: je 1 David Decker · deckerweb.de · WP Camp 2012
  • 3. Beispiel DECKERWEB ? Ursachen: 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 David Decker · deckerweb.de · WP Camp 2012
  • 4. Beispiel DECKERWEB Sehr 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...) David Decker · deckerweb.de · WP Camp 2012
  • 5. ? Ziele Reizvolle 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? David Decker · deckerweb.de · WP Camp 2012
  • 6. ! 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? David Decker · deckerweb.de · WP Camp 2012
  • 7. Grundkonzept Eigentliche 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? David Decker · deckerweb.de · WP Camp 2012
  • 8. Vorbereitung - Aufbau Hauptdatei mit Plugin-Kopf (Header, Meta, Lizenz) Funktionen? Klasse - Methoden? Variablen Konstanten Querschnittsaufgabe: Lokalisierung WordPress.org: readme.txt (generell sinnvoll!) Andere Repositories/ Marktplätze? David Decker · deckerweb.de · WP Camp 2012
  • 9. (Datei-) Organisation Klare Ordnung aller Dateien/ Assets Saubere Benennung aller Dateien Alle benötigten Dateien/ Bibliotheken im Plugin! ../wp-content/plugins/ /wpcamp-test-plugin/ Textdomain? /css/ = Plugin-Slug! /images/ ('wpcamp-test-plugin') /includes/ admin-settings.php Hauptdateiname? /js/ = Plugin-Slug! /languages/ (wpcamp-test-plugin.php) readme.txt wpcamp-test-plugin.php David Decker · deckerweb.de · WP Camp 2012
  • 10. Grundprinzipien I Alles mit Präfix bitte! //Funktionen: Bewährt: function ddw_bptb_init() { Initialen // inhalt Plugin-Name abgekürzt } o. Name der Agentur //Konstanten: abgekürzt... define( 'BPTB_PLUGIN_BASEDIR', ... ); Ziele: //Variablen: Einzigartig! $bptb_lang_dir Keine Kollisionen im //Klassen PHP-Namensraum class DDW_BuddyPress_Toolbar { // inhalt } David Decker · deckerweb.de · WP Camp 2012
  • 11. Grundprinzipien II Code 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 verwenden NUR laden, wo es gebraucht wird, NICHT überall Abhängigkeiten beachten! Standardkonformer Code = performant und konfliktfrei David Decker · deckerweb.de · WP Camp 2012
  • 12. Modulare Plugins „Extensible, or modular code, is code that can be modified, interacted with, added to, or manipulated . . . all without ever modifying the core code base.“ „Good extensible code makes it exceptionally easy to expand your own code base.“ --Pippin Williamson, pippinsplugins.com 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! David Decker · deckerweb.de · WP Camp 2012
  • 13. Modulare Plugins Know your hooks! Hooks und Filter == WordPress-Konzept! apply_filters() Einen Filter-Hook einrichten, der via add_filter() angesprochen wird add_filter() (Text-) Strings oder sonstige Daten über bestehenden "Hook" ÄNDERN has_filter() – Prüfen, ob ein Filter existiert do_action() Einen Einhängepunkt (Hook) einrichten, der alle eingehängten Funktionen 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 David Decker · deckerweb.de · WP Camp 2012
  • 14. Modulare Plugins WordPress Gravity Forms EDD Woo/ Jigo Erweiterbarer Code Genesis ... „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!) David Decker · deckerweb.de · WP Camp 2012
  • 15. Sicherheit ESCAPE-Funktionen (HTML, Attribute, URLs) SANITIZING-Funktionen - Benutzerein- und Ausgaben absichern („heilen“) ! Der Codex hilft! Betrifft: codex.wordpress.org Admin-Optionen Alle (Admin-) Formulare, Eingaben, Ausgaben URLs! (bis hin zu WP-eigenen Permalinks etc.) Übersetzungs-Strings (Stichwort: Filter!) David Decker · deckerweb.de · WP Camp 2012
  • 16. Coding Standards Danke, 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/ David Decker · deckerweb.de · WP Camp 2012
  • 17. Coding Standards Lesbar Verstehbar Erweiterbar Transportierbar Teamarbeit David Decker · deckerweb.de · WP Camp 2012
  • 18. Best Practices Plugin: 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 David Decker · deckerweb.de · WP Camp 2012
  • 19. 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: Rewrite Rules Inspector Debug Bar Developer WP Admin Error Handler WordPress Beta Tester User Switching Codestyling Localization GlotPress (kein Plugin!) David Decker · deckerweb.de · WP Camp 2012
  • 20. 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 ;-) David Decker · deckerweb.de · WP Camp 2012
  • 21. 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! :) David Decker · deckerweb.de · WP Camp 2012
  • 22. readme.txt Validator: http://wordpress.org/extend/plugins/about/validator/ David Decker · deckerweb.de · WP Camp 2012
  • 23. SVN - Subversion: http://wordpress.org/extend/plugins/about/svn/ David Decker · deckerweb.de · WP Camp 2012
  • 24. 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/ David Decker · deckerweb.de · WP Camp 2012
  • 25. Danke! Fragen jetzt! Folien unter: deckerweb.de/wpcamp2012 plus: slideshare.net/deckerweb David Decker @deckerweb +David Decker deckerweb.de profiles.wordpress.org/daveshine translate.wpautobahn.com David Decker · deckerweb.de · WP Camp 2012
  • 26. /** 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' ); } } David Decker · deckerweb.de · WP Camp 2012