Your SlideShare is downloading. ×
Creating and Maintaining WordPress Plugins
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Creating and Maintaining WordPress Plugins

4,491

Published on

Published in: Technology, Art & Photos
1 Comment
6 Likes
Statistics
Notes
No Downloads
Views
Total Views
4,491
On Slideshare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
45
Comments
1
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Creating andMark Jaquith “JAKE-with” Maintaining WordPress @markjaquith Pluginsmark@jaquith.memarkjaquith.com
  • 2. Why?Pa erns! Repo… Sanity.
  • 3. Why makeplugins
  • 4. functions.phpis not the newmy-hacks.php
  • 5. Plugins separatefunctionality fromcore and themes
  • 6. Pluginscomparmentalize your code
  • 7. Plugins[comparmentalize] your code
  • 8. Plugins[compart][mentalize] your code
  • 9. Pa erns
  • 10. <?php/*Plugin Name: NAME*/
  • 11. Encapsulatewith CLASS
  • 12. function your_initials_long_plugin_name_do_thing() vs. function do_thing()
  • 13. <?php/*Plugin Name: NAME*/class CWS_ATL_Plugin { static $instance; function __construct() { self::$instance = $this; add_action( plugins_loaded, array( $this, plugins_loaded ) ); } function plugins_loaded() { // Add actions and hooks here }}new CWS_ATL_Plugin;
  • 14. function plugins_loaded() { add_filter( the_title, array( $this, the_title ), 10, 2 ); add_action( init, array( $this, init ), 5 ); add_action( omg, array( $this, is_really_tedious ), 11, 3 );}
  • 15. if(!class_exists(CWS_Plugin_v2)){class CWS_Plugin_v2{functionhook($h){$p=10;$m=$this->sanitize_method($h);$b=func_get_args();unset($b[0]);foreach((array)$b as $a){if(is_int($a))$p=$a;else $m=$a;}return add_action($h,array($this,$m),$p,999);}private functionsanitize_method($m){returnstr_replace(array(.,-),array(_DOT_,_DASH_),$m);}}}
  • 16. <?php/*Plugin Name: NAME*/if(!class_exists(CWS_Plugin_v2)){class CWS_Plugin_v2{function hook($h){$p=10;$m=$this->sanitize_method($h);$b=func_get_args();unset($b[0]);foreach((array)$b as $a){if(is_int($a))$p=$a;else$m=$a;}return add_action($h,array($this,$m),$p,999);}private function sanitize_method($m){returnstr_replace(array(.,-),array(_DOT_,_DASH_),$m);}}}class CWS_ATL_Plugin extends CWS_Plugin_v2 { static $instance; function __construct() { self::$instance = $this; $this->hook( plugins_loaded ); } function plugins_loaded() { // Add actions and hooks here }}new CWS_ATL_Plugin;
  • 17. // BEFOREfunction plugins_loaded() { add_filter( the_title, array( $this, the_title ), 10, 2 ); add_action( init, array( $this, init ), 5 ); add_action( omg, array( $this, is_really_tedious ), 11, 3 );}// AFTERfunction plugins_loaded() { $this->hook( the_title ); $this->hook( init, 5 ); $this->hook( omg, is_really_tedious, 3 );}
  • 18. Defer actions
  • 19. Options in an array
  • 20. const OPTIONS = my_plugin_option_name;function get_option( $key ) { $options = get_option( self::OPTIONS ); if ( isset( $options[$key] ) ) return $options[$key];}function set_option( $key, $value ) { $options = get_option( self::OPTIONS ); $options[$key] = $value; update_option( self::OPTIONS, $options );}
  • 21. Plugins Repo
  • 22. Community Karma
  • 23. Professional Credibility
  • 24. Easy reuse for you
  • 25. SVN
  • 26. svn checkout h p://plugins.svn.wordpress.org/{plugin-name}Plugin dev loop { svn up {hackity hack hack} svn add {new-files} svn commit -m {Message about your changes}
  • 27. /trunk/ for developmentTag your releases
  • 28. /trunk/readme.txtspecifies the stable tag Stable tag: 2.3
  • 29. === Your Plugin ===Contributors: markjaquith, nacinbotDonate link: h p://example.com/paypalTags: foo, barRequires at least: 3.2Tested up to: 3.3.1Stable tag: 2.3Here is a short description of the plugin. This should be no morethan 150 characters. No markup here.
  • 30. 1. Tag in SVN2. “Repoint” /trunk/readme.txt
  • 31. Support forumswordpress.org/support/view/plugin-commi er/USERNAME
  • 32. assets/banner-772x250.(jpg|png)
  • 33. Sanity
  • 34. Slow downon the optionscowboyand/or-girl
  • 35. Say hello to my li le friend:
  • 36. Say hello to my li le friend: “no”
  • 37. Encourage goodbehavior
  • 38. Encourage g o o dbehavior
  • 39. Q&AMark Jaquith “JAKE-with” @markjaquithmark@jaquith.memarkjaquith.com

×