Science Passionate for WordPress WordCamp Detroit Organizer Passionate for open source WordPress plugin developer Passionate for words Serial blogger Passionate for possibilities Co-founder of flipfrog and AMBR Detroit
the functionality of WordPress." ~ http://codex.wordpress.org/Plugins MEGA IMPORTANT! The Codex The online manual for WordPress and a living repository for WordPress information and documentation.
# of plugin downloads Sources: http://wordpress.org/extend/plugins/ http://digwp.com/2010/01/poll-results-how-many-plugins-do-you-use/ http://www.daveligthart.com/top-1000-wordpress-plugin-authors/ 63 % of users that use 10 plugins or less 12,134,168 # of downloads of the most popular plugin - All in One SEO Pack 9,783+ # of plugin developers
in the title. • Show what is being replaced as a sidebar widget. • Admin menu to change the find word and replace word. • Email me when a new post is published.
many hooks within the system to get things done. Filter Hooks Filters are the hooks that WordPress launches to modify text of various types before adding it to the database or sending it to the browser screen. Action Hooks Actions are the hooks that the WordPress core launches at specific points during execution, or when specific events occur. Source: http://codex.wordpress.org/Plugin_API
set of PHP functions that allow you to signal your own functions to be called when that hook is called. Filter Example: Action Example: add_filter('the_title', function($title) { return '<b>'. $title. '</b>';}) add_action( 'save_post', 'my_save_post', 10, 2 ); Actions: http://codex.wordpress.org/Plugin_API/Action_Reference Filters: http://codex.wordpress.org/Plugin_API/Filter_Reference
(required) ◦ This is the WordPress named location where the hook takes place. • Function (required) ◦ This is the function to be called when the hook is executed. • Priority (optional) ◦ This determines the order your function is run, the lower, the earlier. • Parameters (optional) ◦ This is the number of parameters your function takes
• Create a php file with a plugin header comment box /* Plugin Name: My First Plugin Plugin URI: http://wordpress.org/extend/plugins/ Description: This is a description of a plugin Author: Anthony Montalbano Version: alpha Author URI: http://www.ambrdetroit.com */ http://codex.wordpress.org/Writing_a_Plugin#File_Headers
is first activated? • Create database tables, data, and files • Update database tables, data, and files What will your plugin do when it is uninstalled? • Delete databases tables, data, files
called 'demo_activate' Source: http://codex.wordpress.org/Function_Reference/register_activation_hook register_activation_hook( __FILE__, 'demo_activate' ); function demo_activate() { //do something when the plugin first initializes };
new function called 'demo_title_change' Source: http://codex.wordpress.org/Function_Reference/add_filter add_filter( 'the_title, 'demo_title_change' ); function demo_title_change($title) { //do something with the title str_replace( 'world', 'something', $title); return $title; };
new function called 'demo_title_change' Source: http://codex.wordpress.org/Function_Reference/add_filter add_action( 'publish_post, 'demo_email_me' ); function demo_email_me($post_id) { wp_mail('[email protected]', 'New post!', 'New post on my demo blog, go check it out:' . get_bloginfo ('url')); return $post_id; };
to where the settings page will show in the admin: Next we need to add a function to define the menu: add_action('admin_menu', 'my_plugin_menu'); Source: http://codex.wordpress.org/Function_Reference/add_options_page function my_plugin_menu() { add_options_page('Demo Plugin Options', 'Demo Plugin', 'manage_options', 'demo-plugin', 'demo_plugin_options'); }
to load the widget on widget initialization: Next, we need to create a function to register the widget: add_action( 'widgets_init', 'demo_load_widgets' ); Source: http://codex.wordpress.org/Widgets_API function demo_load_widgets() { register_widget( "demo_widget" ); }
create a unique plugin prefix that can be used for all functions and variables. Since there are many plugins, it's important that your functions and variables don't conflict with other plugins.
great database class called WPDB and makes it very each to plugin to the WordPress database. http://codex.wordpress.org/Class_Reference/wpdb For simple name/value pairs you can use WordPress options http://codex.wordpress.org/Function_Reference/add_option
where you may want to include a javascript or style sheet with your plugin. WordPress has this functionality built in. By default WordPress has many scripts included, such as jQuery. http://codex.wordpress.org/Function_Reference/wp_enqueue_script
a style sheet that should be used when creating admin menus. The goal is to make your plugin fit seamless with WordPress. http://codex.wordpress.org/User:TECannon/UI_Pattern_and_Style_Guide
a function called prepare(). Use this function to properly prepare your SQL statements. http://codex.wordpress. org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks