creating and maintaining wordpress plugins

40
Creating and Maintaining WordPress Plugins Mark Jaquith “JAKE-with” @markjaquith [email protected] markjaquith.com

Upload: mark-jaquith

Post on 08-May-2015

4.511 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Creating and Maintaining WordPress Plugins

Creatingand

MaintainingWordPressPlugins

Mark Jaquith“JAKE-with”

@[email protected]

Page 2: Creating and Maintaining WordPress Plugins

Why?Pa!erns!

Repo…Sanity.

Page 3: Creating and Maintaining WordPress Plugins

Why make plugins

Page 4: Creating and Maintaining WordPress Plugins

functions.phpis not the newmy-hacks.php

Page 5: Creating and Maintaining WordPress Plugins

Plugins separatefunctionality fromcore and themes

Page 6: Creating and Maintaining WordPress Plugins

Plugins

your codecomparmentalize

Page 7: Creating and Maintaining WordPress Plugins

Plugins

your code[comparmentalize]

Page 8: Creating and Maintaining WordPress Plugins

Plugins

your code[compart][mentalize]

Page 9: Creating and Maintaining WordPress Plugins

Pa!erns

Page 10: Creating and Maintaining WordPress Plugins

<?php/*Plugin Name: NAME*/

Page 11: Creating and Maintaining WordPress Plugins

Encapsulatewith CLASS

Page 12: Creating and Maintaining WordPress Plugins

function your_initials_long_plugin_name_do_thing()

vs.

function do_thing()

Page 13: Creating and Maintaining WordPress Plugins

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

Page 14: Creating and Maintaining WordPress Plugins

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

Page 15: Creating and Maintaining WordPress Plugins

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){return str_replace(array('.','-'),array('_DOT_','_DASH_'),$m);}}}

Page 16: Creating and Maintaining WordPress Plugins

<?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){return str_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;

Page 17: Creating and Maintaining WordPress Plugins

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

Page 18: Creating and Maintaining WordPress Plugins
Page 19: Creating and Maintaining WordPress Plugins

Defer actions

Page 20: Creating and Maintaining WordPress Plugins

Options in an array

Page 21: Creating and Maintaining WordPress Plugins

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

Page 22: Creating and Maintaining WordPress Plugins

Plugins Repo

Page 23: Creating and Maintaining WordPress Plugins

CommunityKarma

Page 24: Creating and Maintaining WordPress Plugins

ProfessionalCredibility

Page 25: Creating and Maintaining WordPress Plugins

Easy reuse for you

Page 26: Creating and Maintaining WordPress Plugins

SVN

Page 27: Creating and Maintaining WordPress Plugins

svn checkout h!p://plugins.svn.wordpress.org/{plugin-name}

svn up

{hackity hack hack}

svn add {new-files}

svn commit -m '{Message about your changes}'{

Plug

in d

ev lo

op

Page 28: Creating and Maintaining WordPress Plugins

/trunk/ for development

Tag your releases

Page 29: Creating and Maintaining WordPress Plugins

/trunk/readme.txt

specifies the stable tag

Stable tag: 2.3

Page 30: Creating and Maintaining WordPress Plugins

=== Your Plugin ===Contributors: markjaquith, nacinbotDonate link: h!p://example.com/paypalTags: foo, barRequires at least: 3.2Tested up to: 3.3.1Stable tag: 2.3

Here is a short description of the plugin. This should be no more than 150 characters. No markup here.

Page 31: Creating and Maintaining WordPress Plugins

1. Tag in SVN

2. “Repoint” /trunk/readme.txt

Page 33: Creating and Maintaining WordPress Plugins

assets/banner-772x250.(jpg|png)

Page 34: Creating and Maintaining WordPress Plugins

Sanity

Page 35: Creating and Maintaining WordPress Plugins

Slow downon the optionscowboyand/or-girl

Page 36: Creating and Maintaining WordPress Plugins

Say hello to my li!le friend:

Page 37: Creating and Maintaining WordPress Plugins

Say hello to my li!le friend:

“no”

Page 38: Creating and Maintaining WordPress Plugins

Encourage

behaviorgood

Page 39: Creating and Maintaining WordPress Plugins

Encourage

behaviorgood