The WordPress Hacker's Guide to the \Galaxy() [@MidwestPHP]

1,672 views

Published on

Having started out as a self-described "WordPress hacker", it's taken me years to discover how to incorporate best practices into a WordPress context. I'll share a brief overview of the plugin devleopment concepts I wish I'd understood earlier, including object-oriented architecture, interface-like dependency management, robust app-like directory structure, super-charged deployment, the power of WP constants and APIs, and more.

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,672
On SlideShare
0
From Embeds
0
Number of Embeds
485
Actions
Shares
0
Downloads
12
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

The WordPress Hacker's Guide to the \Galaxy() [@MidwestPHP]

  1. 1. The WordPress Hacker’s Guide to the Galaxy()Saturday, March 2, 13
  2. 2. @rhodesjason github.com/jasonrhodes notrobotic.comSaturday, March 2, 13
  3. 3. WordPress, as described by various PHP developers Terrible design buried under a mountain of spaghetti code Reading through [WordPress code] is like jabbing red-hot fire pokeys into your eyes. BEHOLD WORDPRESS, DESTROYER OF CPUS remote shell with cms on side, aka: shit shit plugins WordPress is for cat pictures and diary entries. code is crapcrapcrap F$%@ THAT F$%@ THAT F$%@ THAT F$%@ THAT F$%@ THAT F$%@ THAT WordPress is... just adequate WordPress is for amateurs. WordPress is... terrifyingly insecure. No good default caching, it will kill your server if you don’t know what you’re doing A really terrible database structure Stack Overflow spam questions Not a “real” CMS and definitely not a “real” frameworkSaturday, March 2, 13
  4. 4. WORDPRESS IS NOT THE DEVILSaturday, March 2, 13
  5. 5. WORDPRESS IS PHPSaturday, March 2, 13
  6. 6. WORDPRESS IS CODESaturday, March 2, 13
  7. 7. BETTER CODE BETTER PHP BETTER WORDPRESSSaturday, March 2, 13
  8. 8. THE WP HACKER’S GUIDE TO THE GALAXYSaturday, March 2, 13
  9. 9. +Saturday, March 2, 13
  10. 10. Saturday, March 2, 13
  11. 11. Saturday, March 2, 13
  12. 12. Saturday, March 2, 13
  13. 13. THE WP HACKER’S GUIDE TO THE GALAXYSaturday, March 2, 13
  14. 14. FOLDER STRUCTURESaturday, March 2, 13
  15. 15. mysite /wp-admin /wp-content /wp-includes index.php wp-config.php wp-{etc}.phpSaturday, March 2, 13
  16. 16. mysite index.php /wpSaturday, March 2, 13
  17. 17. WP GIANTS: MARK JAQUITHSaturday, March 2, 13
  18. 18. Saturday, March 2, 13
  19. 19. Saturday, March 2, 13
  20. 20. Saturday, March 2, 13
  21. 21. mysite /config /environments environment-config.php /public /content /wp index.php wp-config.php /vendorSaturday, March 2, 13
  22. 22. Saturday, March 2, 13
  23. 23. Saturday, March 2, 13
  24. 24. LET’S WRITE SOME PLUGIN CODESaturday, March 2, 13
  25. 25. Saturday, March 2, 13
  26. 26. YES, PLUGINS (NOT FUNCTIONS.PHP)Saturday, March 2, 13
  27. 27. Saturday, March 2, 13
  28. 28. MUST USE PLUGINSSaturday, March 2, 13
  29. 29. content /plugins cornify.php /batcache /themes /uploadsSaturday, March 2, 13
  30. 30. content /mu-plugins /plugins cornify.php /batcache /themes /uploadsSaturday, March 2, 13
  31. 31. Saturday, March 2, 13
  32. 32. What’s the difference between actions and filters? Filters filter. Actions (usually) have side effects. http://wp.smashingmagazine.com/2012/02/16/ inside-wordpress-actions-filters/Saturday, March 2, 13
  33. 33. CALLABLE add_action(“action_name”, “function_name”);Saturday, March 2, 13
  34. 34. array($object, “method_name”)Saturday, March 2, 13
  35. 35. LET’S USE OOPSaturday, March 2, 13
  36. 36. WP GIANTS: SCRIBUSaturday, March 2, 13
  37. 37. Saturday, March 2, 13
  38. 38. Saturday, March 2, 13
  39. 39. LET’S NAMESPACESaturday, March 2, 13
  40. 40. Saturday, March 2, 13
  41. 41. Saturday, March 2, 13
  42. 42. MORE GOOD THINGS ‣ Load JS/CSS with enqueue functions ‣ Write tests (PHPUnit and QUnit) ‣ Experiment with WP-CLI ‣ Fun with caching ‣ Use the APIs ‣ Deploy smartSaturday, March 2, 13
  43. 43. ‣ Database API ‣ Rewrite API ‣ HTTP API ‣ Settings API ‣ File Header API ‣ Shortcode API ‣ Filesystem API ‣ Theme Modification API ‣ Metadata API ‣ Theme Customization API ‣ Options API ‣ Transients API ‣ Plugin API ‣ Widgets API ‣ Quicktags API ‣ XML-RPC WordPress APISaturday, March 2, 13
  44. 44. mysite current -> releases/1362181983 /releases /1362181983 /1362153455 /1362141927 /shared /config /filesSaturday, March 2, 13
  45. 45. Saturday, March 2, 13
  46. 46. Saturday, March 2, 13
  47. 47. @rhodesjason Please rate this talk https://joind.in/8209 Slides, notes, example code: http://notrobotic.com/talks/ 2013-02-20-wpgalaxy.htmlSaturday, March 2, 13

×