Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Easy Extensible Plugins

Easy Extensible Plugins

Extensible plugins are often the ones the WordPress community consider to be the best as they take advantage of the WordPress license and allow developers to build on and edit them.

In this talk I will outline some of the methods which can be used to make your plugins extensible, allowing others to edit and build upon them.

Mark Wilkinson

June 28, 2014
Tweet

More Decks by Mark Wilkinson

Other Decks in Technology

Transcript

  1. EASY
    EXTENSIBLE
    PLUGINS
    Mark Wilkinson
    @wpmark
    markwilkinson.me

    View Slide

  2. Secondary School
    Computing Teacher

    View Slide

  3. Freelance Developer
    working from home

    View Slide

  4. View Slide

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

    View Slide

  6. WHAT?
    WHY?
    TOOLS/FUNCTIONS
    EXAMPLES

    View Slide

  7. PLUGIN and or THEME

    View Slide

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

    View Slide

  9. WHY?

    View Slide

  10. SAFE
    MODIFICATION
    FUNCTIONALITY

    View Slide

  11. SAFE
    MODIFICATION
    FRONT END OUTPUT

    View Slide

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

    View Slide

  13. View Slide

  14. TOOLS
    FUNCTIONS

    View Slide

  15. ACTIONS & FILTERS

    View Slide

  16. do_action();

    View Slide

  17. View Slide

  18. 'do_action(
    'twentyfourteen_credits’
    );

    View Slide

  19. function wpmark_notice() {
    echo 'Site by Mark Wilkinson';
    }
    add_action( 'twentyfourteen_credits', 'wpmark_notice' );  

    View Slide

  20. apply_filters();

    View Slide

  21. 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…
     

    View Slide

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

    View Slide

  23. 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' );  

    View Slide

  24. IMPEMENTATION
    INTO YOUR OWN PLUGINS

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    endwhile;

    View Slide

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

    endwhile;

    View Slide

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

    do_action( ‘wpmark_after_post’, get_the_ID() );
    endwhile;

    View Slide

  31. EXAMPLES

    View Slide

  32. View Slide

  33. apply_filters(
    ‘gform_field_value_date’
    );

    View Slide

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

    View Slide

  35. View Slide

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

    View Slide

  37. CONCLUSION

    View Slide

  38. do_action();
    apply_filters()
    OUR FRIENDS

    View Slide

  39. THANK YOU
    Mark Wilkinson
    @wpmark
    markwilkinson.me

    View Slide

  40. QUESTIONS

    View Slide