Slide 1

Slide 1 text

EASY EXTENSIBLE PLUGINS Mark Wilkinson @wpmark markwilkinson.me

Slide 2

Slide 2 text

Secondary School Computing Teacher

Slide 3

Slide 3 text

Freelance Developer working from home

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

31,491 PLUGINS *as of 05/06/2014

Slide 6

Slide 6 text

WHAT? WHY? TOOLS/FUNCTIONS EXAMPLES

Slide 7

Slide 7 text

PLUGIN and or THEME

Slide 8

Slide 8 text

One that can be modified or extended without changing the plugin code itself AN EXTENSIBLE PLUGIN is

Slide 9

Slide 9 text

WHY?

Slide 10

Slide 10 text

SAFE MODIFICATION FUNCTIONALITY

Slide 11

Slide 11 text

SAFE MODIFICATION FRONT END OUTPUT

Slide 12

Slide 12 text

https://www.flickr.com/photos/damndirty/10166197684

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

TOOLS FUNCTIONS

Slide 15

Slide 15 text

ACTIONS & FILTERS

Slide 16

Slide 16 text

do_action();

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

'do_action( 'twentyfourteen_credits’ );

Slide 19

Slide 19 text

function wpmark_notice() { echo '

Site by Mark Wilkinson

'; } add_action( 'twentyfourteen_credits', 'wpmark_notice' );  

Slide 20

Slide 20 text

apply_filters();

Slide 21

Slide 21 text

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus malesuada sem at sapien rutrum, eu…   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus malesuada sem at sapien rutrum, eu…  

Slide 22

Slide 22 text

'
'. apply_filters( 'latest_tweets_render_before', '' ). $list. apply_filters( 'latest_tweets_render_after', '' ). '
';  

Slide 23

Slide 23 text

function wpmark_twitter( $content ) { /* get the twitter url from site options */ $url = get_option( ‘twitter_url' ); $content = '@' . basename( $url ) . ''; return $content; } add_filter( 'latest_tweets_render_before', ’wpmark_twitter' );  

Slide 24

Slide 24 text

IMPEMENTATION INTO YOUR OWN PLUGINS

Slide 25

Slide 25 text

SETTING UP ARRAYS BEFORE/AFTER HTML OUTPUT BEFORE/AFTER SETUP

Slide 26

Slide 26 text

$query_args = array( 'post_type' => 'page', 'cat' => 1 );

Slide 27

Slide 27 text

$query_args = apply_filters( 'wpmark_query_args', array( 'post_type' => 'page', 'cat' => 1 ) );

Slide 28

Slide 28 text

$query = new WP_Query( $query_args ); while( $query->have_posts() ) : $query->the_post(); ?>

Slide 29

Slide 29 text

$query = new WP_Query( $query_args ); while( $query->have_posts() ) : $query->the_post(); do_action( ‘wpmark_before_post’, get_the_ID() ); ?>

Slide 30

Slide 30 text

$query = new WP_Query( $query_args ); while( $query->have_posts() ) : $query->the_post(); do_action( ‘wpmark_before_post’, get_the_ID() ); ?>

Slide 31

Slide 31 text

EXAMPLES

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

apply_filters( ‘gform_field_value_date’ );

Slide 34

Slide 34 text

function populate_date( $value ) { return "10/10/2010"; } add_filter( ‘gform_field_value_date’, ‘populate_date’ );

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

function wpmark_product_wrapper() { echo '
Something before the loop.
'; } add_action( 'woocommerce_before_shop_loop', 'wpmark_product_wrapper’ );

Slide 37

Slide 37 text

CONCLUSION

Slide 38

Slide 38 text

do_action(); apply_filters() OUR FRIENDS

Slide 39

Slide 39 text

THANK YOU Mark Wilkinson @wpmark markwilkinson.me

Slide 40

Slide 40 text

QUESTIONS