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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Creating and Maintaining WordPress Plugins

  • 4,249 views
Published

 

Published in Technology , Art & Photos
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
4,249
On SlideShare
0
From Embeds
0
Number of Embeds
9

Actions

Shares
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