22
Building better WordPress applications PBWEB.CO.UK @PHILL_BROWN

Building better WordPress applications

Embed Size (px)

DESCRIPTION

10 tips to improve your WordPress themes and plugins

Citation preview

Page 1: Building better WordPress applications

Building better WordPress applications

PBWEB.CO.UK

@PHILL_BROWN

Page 2: Building better WordPress applications

Problems with WordPress applications• Business logic in themes

• Repeated code

• Tight coupling

• Portability

Page 3: Building better WordPress applications

Rule #1Do not write your application in

functions.php

Page 4: Building better WordPress applications

Decoupling plugins and themesLogic Templates

Templates

Plugin

Theme

Page 5: Building better WordPress applications

Rule #2Every action should be hooked

Page 6: Building better WordPress applications

function my_plugin_start() {// Fire up application

}

// Wrongmy_plugin_start();

// Rightadd_action( ‘plugins_loaded’, ‘my_plugin_start’ );

Page 7: Building better WordPress applications

Rule #3Use WordPress

Page 8: Building better WordPress applications

Core checklist• Custom post types and post meta

• Roles, capabilities and user meta

• Options and transients

• Scheduler

• Remote HTTP

Page 9: Building better WordPress applications

Rule #4Use plugin dependencies

Page 10: Building better WordPress applications

• Scribu’s Plugin Dependencies

• if ( ! class_exists( ‘plugin_x’ ) ) {wp_die( ‘Plugin Y requires plugin x’ );

}

Page 11: Building better WordPress applications

Rule #5Standardise code

Page 12: Building better WordPress applications

• WordPress coding standards:http://codex.wordpress.org/WordPress_Coding_Standards

• PHPDochttp://en.wikipedia.org/wiki/PHPDoc

Page 13: Building better WordPress applications

Rule #6Choose your PHP version

Page 14: Building better WordPress applications

• WordPress core (v3.0+) – 5.1.1

• 5.2 – DateTime

• 5.3 – Late static binding, closures, namespacing

• 5.4 - Traits

Page 15: Building better WordPress applications

Rule #7Avoid global scoping

Page 16: Building better WordPress applications

add_action( ‘init’, function() {// do something 

} );

Closures

Page 17: Building better WordPress applications

namespace wordpress\my_plugin;

class Post {} 

Namespacing

class My_Plugin_Post {} 

PHP 5.3

PHP 5.1

Page 18: Building better WordPress applications

Rule #8Activation hooks

Page 19: Building better WordPress applications

register_activation_hook( __FILE__, ‘my_plugin_activate’ );

function my_plugin_activate() {// Create tables, roles, capabilities

}

register_uninstall_hook( __FILE__, ‘my_plugin_uninstall’ );

function my_plugin_uninstall() {// Cleanup data

}

Page 20: Building better WordPress applications

Rule #9define( ‘WP_DEBUG’, true );

Page 21: Building better WordPress applications

Rule #10Release your code

Page 22: Building better WordPress applications

Questions?

@PHILL_BROWN

[email protected]