so, you want to be a plugin developer?
TRANSCRIPT
SO, YOU WANT TO BE APLUGIN DEVELOPER?
, WordPress Plugin Developer / Yannick Lefebvre @ylefebvre
ylefebvre.ca/wcmtl14
WordCamp Montréal 2014
ABOUT MEUser since 2004
First plugin in 2005
Eight free plugins on
Private plugins for customers
official repository
MY BOOKPublished July 2012
Learn all about plugindevelopment through morethan 80 step-by-stepexamples
TOPICSFinding inspiration
Coding your masterpiece
Promoting your work
Monetization strategies
Supporting your community
FINDING INSPIRATIONBest plugins come from solving actual needs
functions.php code
Customer plugins
Recurring needs from wordpress.org forums
No good plugin for a task
ACTIONS AND FILTERS 101Actions allow you to execute code almost anywhere in pagerendering
Add content
Alter core functionality
Add custom admin panels
Extend WP (CPT, DB Schema, etc...)
ACTIONS AND FILTERS 101Filters allow you to modify almost any data before it is displayed
Hide unwanted elements
Modify page content
Insert new items on pages based on configuration (e.g.image slider)
ACTIONS AND FILTERS 1011061 action hooks
1594 filter hooks
Full list of calls hookr.io
ACTIONS AND FILTERS: THE BIG PICTURECommunity-driven sites
Complex store fronts
Dynamic content-driven sites
Enhance content editing
Create new importers
New ways to interact with external web sites
DID OTHERS HAVE YOUR IDEA?> 32000 plugins!
Look for others
Can you do better?
Name taken?
Reserve name ASAP
PLUGIN REPOSITORY SEO OPTIMIZATIONwordpress.org or plugins admin
Catchy name
Short description
Keywords
Test searches
CODING YOUR MASTERPIECEUSER EXPERIENCE
Clean admin pages
No file modification
div tags for styling
FAQ and Documentation
CODING YOUR MASTERPIECEDISTRIBUTION LICENSE
GNU General Public License v2 or later
Core plugin code
PHP libraries
javascript / jQuery plugins
Icons and images
Plugins scanned for non-compliance
CODING YOUR MASTERPIECEPLUGIN SECURITY
Scanned for security holes
Known insecure libraries (Timthumb)
Malicious code injection
SQL injection
Relative file load paths
Suspended and hidden when issues found
Fix ASAP to get back online
CODING YOUR MASTERPIECEINTERNATIONALIZATION
Follow WordPress guidelines on making your plugin translatable
I18n for WordPress Developers
Dedicated users often provide translations for your work
CODING YOUR MASTERPIECETESTING
Single-site versus multi-site
Single plugin versus Top 10 popular plugins
http vs https
jQuery
Multiple themes
Local machine vs hosted site
Configuration option mix
morgueFile
PROMOTING YOUR WORKIMAGE RESOURCES
Others: , StockVault EveryStockPhoto
IconArchive
PROMOTING YOUR WORKICON RESOURCES
Others: , Icons8 The Noun Project
MONETIZATION STRATEGIESFREE PLUGINS
Only free plugins on wordpress.org
Donation links
Ads for premium version
Guilt-based support
Revenue expectation: $0-100 / month
MONETIZATION STRATEGIESPREMIUM PLUGINS AND ADD-ONS
e.g. Gravity Forms, MailPoet
Direct revenue
Separate sale channel and hosting platform
Custom update mechanism
Potential piracy
User support expectation
Revenue expectation: Higher, more work
MONETIZATION STRATEGIESFAIR USE
Direct call to action
Allows integrators to remove donation links
Revenue expectation: Slightly better than free
SUPPORTING YOUR COMMUNITYPopular plugin = Questions
Paid plugin = Demanding users
Avoid general WP support questions
Manage expectations
SUPPORTING YOUR COMMUNITYKEEP ALL SUPPORT IN ONE PLACE
wordpress.org forums
Easier for users to search
Harder to miss a question
Advanced users can help others!
SUPPORTING YOUR COMMUNITYVIDEO TUTORIALS
Free tools: , screenr.com Screencast-O-Matic
SUPPORTING YOUR COMMUNITYFEATURE REQUESTS
Good and bad ideas
Feature creep
Don't be afraid to say NO!
SUPPORTING YOUR COMMUNITYUPDATE FREQUENCY
Updates include
Bug fixes
New functionality
After update, users need to
Read changelog
Test site functionality
SUPPORTING YOUR COMMUNITYDROPPING FEATURES
Avoid if possible
No easy way to poll users
Remove and cross fingers
THANK YOU FORATTENDING MY TALK
QUESTIONS?
ylefebvre.ca/wcmtl14@ylefebvre