Presentation is loading. Please wait.

Presentation is loading. Please wait.

Developing WordPress Plugins

Similar presentations


Presentation on theme: "Developing WordPress Plugins"— Presentation transcript:

1 Developing WordPress Plugins
Markku Seguerra

2 What is a WordPress plugin?
Little applications used to enhance functionality or add specific functions tailored to a site's specific needs.

3 Some plugins: - Akismet - WordPress Database Backup
- WordPress.com Stats - wp-recent-links - Comment Hilite

4 What do you need to make a plugin?
- a problem to solve - some PHP knowledge - some spare time - a test server with your test WordPress (XAMPP is good.)‏

5 Structure: Things to remember
- A unique descriptive name - Naming: myplugin.php or /myplugin/ folder - Readme.txt format for wordpress.org/extend/plugins - Plugin home page - File headers (very important!)‏

6 Headers <?php /* Plugin Name: Name Of The Plugin
Plugin URI: Description: What does it do? Version: 1.0 Author: Name Of The Plugin Author Author URI: */ ?>

7 Include your license details!
The GPL (and compatible licenses) is commonly used for plugins.

8 Plugin Programming Before WP 1.2, customizations required altering the core files, causing conflicts among hacks (remember my-hacks.php?) and making upgrades very tedious. The solution?

9 Plugin API - Enabled "hooks" - Extend functionality without
editing the core code - Two categories: Actions and Filters

10 Actions Specific points in the WordPress
code that can be used to trigger plugin-specified events and functions. add_action( 'hook_name', 'your_function_name', [priority], [accepted_args] );

11 Sample action: “wp_login”
function notify_on_login()‏ { // your code here // to admin, etc... } add_action('wp_login', 'notify_on_login');

12 Filters Functions that modify text, lists and
various types of information that are used and produced by WordPress. add_filter('hook_name', 'your_filter_function', [priority], [accepted_args]);

13 Sample filter: “the_content”
function add_rss_invite()‏ { // output to screen the link to RSS feed // if 1st time visitor } add_filter('the_content', 'add_rss_invite');

14 Template Tags Plugins can also be used to generate
special template tags that display custom content. - Recent comments - Top posts - Ad display

15 Storing Plugin Data - For large amount of data, create
your own database table. - For fairly small and/or static data, use built-in WP "Options" capability. add_option($name, $value, $deprecated, $autoload); get_option($option); update_option($option_name, $newvalue);

16 Administration Menus & Pages
- There are specific functions to add pages and menu items. add_menu_page(page_title, menu_title, access_level/capability, file, [function]); add_submenu_page(); add_options_page(); add_management_page(); add_theme_page();

17 Other things to consider
- Internationalization - WordPress Coding Standards & inline documentation - Function prefixes to avoid name collision - When creating tables, use $wpdb->prefix - Minimize database writes. - Write secure code! (Use nonces, sanitize, etc.)‏ - Be aware of user roles and capabilities. - Stick to the WordPress API to avoid problems!

18 Sample plugin: Strip! <?php /* Plugin Name: Strip!
Plugin URI: Description: Removes hyperlink tags from a given comment. Version: 0.1 Author: Markku Seguerra Author URI: */

19 /* Copyright Markku Seguerra ( This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA USA */

20 add_filter('comment_text', 'strip_comments_add_admin');
function strip_comments_add_admin($text)‏ { // add the strip button to the comment } add_filter('comment_text', 'strip_comments_add'); add_filter('get_comment_author_link', 'strip_comments_add'); function strip_comments_add($text)‏ // mark the comment as stripped and displays // it without links

21 add_action('wp_ajax_strip', 'do_strip');
function do_strip()‏ { // function to mark comment as stripped // triggered via ajax } add_action('wp_ajax_unstrip', 'do_unstrip'); function do_unstrip()‏ function strip_selected_tags($text, $tags = array())‏ // our filter function that removes links

22 add_action('admin_head', 'strip_comments_head');
function strip_comments_head()‏ { // show the necessary css and ajax // functions used in the admin interface }

23 <script type="text/javascript">
//<![CDATA[ function strip_now(cid) { jQuery.post("<?php echo get_option('siteurl'); ?>/wp-admin/admin-ajax.php", {action:"strip", "c":cid, "cookie": encodeURIComponent(document.cookie)}, function(str) { pn = '#p-' + cid; jQuery(pn).html(str); }); } function unstrip_now(cid) { {action:"unstrip", "c":cid, "cookie": encodeURIComponent(document.cookie)}, //]]> </script>

24 Thank you! Markku Seguerra


Download ppt "Developing WordPress Plugins"

Similar presentations


Ads by Google