WordPress plugin development plugin development (with pictures) Simon Wheatley WordPress plugin...
Transcript of WordPress plugin development plugin development (with pictures) Simon Wheatley WordPress plugin...
WordPressplugin development
(with pictures)
Simon Wheatleywww.simonwheatley.co.uk
WordPressplugin development
(with pictures)
Simon Wheatleywww.simonwheatley.co.uk
plugins
photo by djking
anatomy of a plugin file?
photo by striatic
<?php
/*Plugin Name: Flickr InsertPlugin URI: http://www.simonwheatley.co.uk/wordpress/Version: 1.0Description: Allows you to embed Flickr photos and photosets.Author: Simon WheatleyAuthor URI: http://www.simonwheatley.co.uk/
Copyright 2007 Simon Wheatley
(any licensing legal gubbins.)*/
?>
<?php
/*Plugin Name: Flickr Insert*/
?>
filters
photo by BlueskyPol
actions
function bi_insert_bg_css() {$img_id = bi_get_bg_img_id();$img_path = bi_img_path( $img_id );
$css = "<style type='text/css'>\n";$css .= "body {\n";$css .= "background-image: url($img_path)\n”";$css .= "}\n";$css .= "</style>\n";
echo $css;}
add_action('wp_head', 'bi_insert_bg_css');
function names
photo by birdyboo
function bi_insert_bg_css() {$img_id = bi_get_bg_img_id();$img_path = bi_img_path( $img_id );
$css = "<style type='text/css'>\n";$css .= "body {\n";$css .= "background-image: url($img_path)\n”";$css .= "}\n";$css .= "</style>\n";
echo $css;}
add_action('wp_head', 'bi_insert_bg_css');
function bi_insert_bg_css() {$img_id = bi_get_bg_img_id();$img_path = bi_img_path( $img_id );
$css = "<style type='text/css'>\n";$css .= "body {\n";$css .= "background-image: url($img_path)\n”";$css .= "}\n";$css .= "</style>\n";
echo $css;}
add_action('wp_head', 'bi_insert_bg_css');
filters
function ep_exclude_pages( $pages ){$excluded_ids = ep_get_excluded_ids();$length = count( $pages );for ( $i=0; $i<$length; $i++ ) { $page = & $pages[$i]; if ( in_array( $page->ID, $excluded_ids ) ) { unset( $pages[$i] ); }}// Reindex the array, for neatness$pages = array_values( $pages );return $pages;}
add_filter('get_pages','ep_exclude_pages');
function ep_exclude_pages( $pages ){$excluded_ids = ep_get_excluded_ids();$length = count( $pages );for ( $i=0; $i<$length; $i++ ) { $page = & $pages[$i]; if ( in_array( $page->ID, $excluded_ids ) ) { unset( $pages[$i] ); }}// Reindex the array, for neatness$pages = array_values( $pages );return $pages;}
add_filter('get_pages','ep_exclude_pages');
function ep_exclude_pages( $pages ){$excluded_ids = ep_get_excluded_ids();$length = count( $pages );for ( $i=0; $i<$length; $i++ ) { $page = & $pages[$i]; if ( in_array( $page->ID, $excluded_ids ) ) { unset( $pages[$i] ); }}// Reindex the array, for neatness$pages = array_values( $pages );return $pages;}
add_filter('get_pages','ep_exclude_pages');
actions
filters
the editor
photo by thetourise
adding TinyMCE buttons
photo by Thomas Hawk
define( 'FI_WEB_PATH', '/wp-content/plugins/flickr-insert' );
function fi_mce_external_plugins( $plugins ) {$plugins['flickr'] = get_bloginfo('wpurl') . FI_WEB_PATH . '/tinymce/editor_plugin.js';return $plugins;}function fi_addbuttons() {if ( ! current_user_can('edit_posts') && !current_user_can('edit_pages') ) return;if ( ! get_user_option('rich_editing') ) return;add_filter( 'mce_external_plugins', 'fi_mce_external_plugins' );}
add_action('init', 'fi_addbuttons' );
define( 'FI_WEB_PATH', '/wp-content/plugins/flickr-insert' );
function fi_mce_external_plugins( $plugins ) {$plugins['flickr'] = get_bloginfo('wpurl') . FI_WEB_PATH . '/tinymce/editor_plugin.js';return $plugins;}function fi_addbuttons() {if ( ! current_user_can('edit_posts') && !current_user_can('edit_pages') ) return;if ( ! get_user_option('rich_editing') ) return;add_filter( 'mce_external_plugins', 'fi_mce_external_plugins' );}
add_action('init', 'fi_addbuttons' );
define( 'FI_WEB_PATH', '/wp-content/plugins/flickr-insert' );
function fi_mce_external_plugins( $plugins ) {$plugins['flickr'] = get_bloginfo('wpurl') . FI_WEB_PATH . '/tinymce/editor_plugin.js';return $plugins;}function fi_addbuttons() {if ( ! current_user_can('edit_posts') && !current_user_can('edit_pages') ) return;if ( ! get_user_option('rich_editing') ) return;add_filter( 'mce_external_plugins', 'fi_mce_external_plugins' );}
add_action('init', 'fi_addbuttons' );
define( 'FI_WEB_PATH', '/wp-content/plugins/flickr-insert' );
function fi_mce_external_plugins( $plugins ) {$plugins['flickr'] = get_bloginfo('wpurl') . FI_WEB_PATH . '/tinymce/editor_plugin.js';return $plugins;}function fi_addbuttons() {if ( ! current_user_can('edit_posts') && !current_user_can('edit_pages') ) return;if ( ! get_user_option('rich_editing') ) return;add_filter( 'mce_external_plugins', 'fi_mce_external_plugins' );}
add_action('init', 'fi_addbuttons' );
(function() { tinymce.PluginManager.requireLangPack('flickr');tinymce.create('tinymce.plugins.FlickrInsert', {init : function(ed, url) {ed.addButton('flickr', { title : 'flickr.desc', cmd : 'mceFlickr', image : url + '/img/flickr.gif' });ed.onNodeChange.add(function(ed, cm, n) {cm.setActive('flickr', n.nodeName == 'IMG');});}
tinymce.PluginManager.add('flickr', tinymce.plugins.FlickrInsert);})();
(function() { tinymce.PluginManager.requireLangPack('flickr');tinymce.create('tinymce.plugins.FlickrInsert', {init : function(ed, url) {ed.addButton('flickr', { title : 'flickr.desc', cmd : 'mceFlickr', image : url + '/img/flickr.gif' });ed.onNodeChange.add(function(ed, cm, n) {cm.setActive('flickr', n.nodeName == 'IMG');});}
tinymce.PluginManager.add('flickr', tinymce.plugins.FlickrInsert);})();
(function() { tinymce.PluginManager.requireLangPack('flickr');tinymce.create('tinymce.plugins.FlickrInsert', {init : function(ed, url) {ed.addButton('flickr', { title : 'flickr.desc', cmd : 'mceFlickr', image : url + '/img/flickr.gif' });ed.onNodeChange.add(function(ed, cm, n) {cm.setActive('flickr', n.nodeName == 'IMG');});}
tinymce.PluginManager.add('flickr', tinymce.plugins.FlickrInsert);})();
(function() { tinymce.PluginManager.requireLangPack('flickr');tinymce.create('tinymce.plugins.FlickrInsert', {init : function(ed, url) {ed.addButton('flickr', { title : 'flickr.desc', cmd : 'mceFlickr', image : url + '/img/flickr.gif' });ed.onNodeChange.add(function(ed, cm, n) {cm.setActive('flickr', n.nodeName == 'IMG');});}
tinymce.PluginManager.add('flickr', tinymce.plugins.FlickrInsert);})();
(function() { tinymce.PluginManager.requireLangPack('flickr');tinymce.create('tinymce.plugins.FlickrInsert', {init : function(ed, url) {ed.addButton('flickr', { title : 'flickr.desc', cmd : 'mceFlickr', image : url + '/img/flickr.gif' });ed.onNodeChange.add(function(ed, cm, n) {cm.setActive('flickr', n.nodeName == 'IMG');});}
tinymce.PluginManager.add('flickr', tinymce.plugins.FlickrInsert);})();
popup dialog
photo by Kiff ta race / undercensure
(function() { tinymce.PluginManager.requireLangPack('flickr');tinymce.create('tinymce.plugins.FlickrInsert', {init : function(ed, url) {ed.addButton('flickr', { title : 'flickr.desc', cmd : 'mceFlickr', image : url + '/img/flickr.gif' });ed.onNodeChange.add(function(ed, cm, n) {cm.setActive('flickr', n.nodeName == 'IMG');});}
tinymce.PluginManager.add('flickr', tinymce.plugins.FlickrInsert);})();
ed.addCommand('mceFlickr', function() { ed.windowManager.open({ file : url + '/../../../../wp-admin/?fi_dialog=1', width : 640 + parseInt(ed.getLang('flickr.delta_width', 0)), height : 430 + parseInt(ed.getLang('flickr.delta_height', 0)), inline : 1}, { plugin_url : url });});
(function() { tinymce.PluginManager.requireLangPack('flickr');tinymce.create('tinymce.plugins.FlickrInsert', {init : function(ed, url) {ed.addCommand('mceFlickr', function() { ed.windowManager.open({ file : url + '/../../../../wp-admin/?fi_dialog=1', width : 640 + parseInt(ed.getLang('flickr.delta_width', 0)), height : 430 + parseInt(ed.getLang('flickr.delta_height', 0)), inline : 1}, { plugin_url : url });});}tinymce.PluginManager.add('flickr', tinymce.plugins.FlickrInsert);})();
forms
photo by source
function fi_photo_query() { $fi_photo = @ $_GET['fi_photo']; if ( ! $fi_photo ) return; $f = & fi_flickr(); $fi_photo_id = @ $_GET['fi_photo_id']; $photo = $f->photos_getInfo( $fi_photo_id ); $href = $f->buildPhotoURL($photo, "medium"); $src = $f->buildPhotoURL($photo, "small"); $alt = addslashes( $photo['title'] ); $data = array( 'href' => $href, 'src' => $src, 'alt' => $alt ); $json = new Moxiecode_JSON(); echo $json->encode( $data ); exit;}
// Answer various AJAX queriesadd_action('init', 'fi_photo_query', -10 );
require_once( ABSPATH . "/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/JSON.php" );
shortcodes
photo by thetourise
[flickr-photoset]http://flickr.com/photos/colonelkillgore/sets/72157594553989524/[/flickr-photoset]
// Parse the photoset shortcodefunction fi_shortcode( $atts, $content ) { $photoset_id = fi_photoset_id( $content ); $html = fi_photoset( $photoset_id ); return $html;}
// Register the Flickr shortcodeadd_shortcode('flickr-photoset', 'fi_shortcode');
// Parse the photoset shortcodefunction fi_shortcode( $atts, $content ) { $photoset_id = fi_photoset_id( $content ); $html = fi_photoset( $photoset_id ); return $html;}
// Register the Flickr shortcodeadd_shortcode('flickr-photoset', 'fi_shortcode');
// Parse the photoset shortcodefunction fi_shortcode( $atts, $content ) { $photoset_id = fi_photoset_id( $content ); $html = fi_photoset( $photoset_id ); return $html;}
// Register the Flickr shortcodeadd_shortcode('flickr-photoset', 'fi_shortcode');
javascripts
photo by Don Solo
define( 'FI_WEB_PATH', '/wp-content/plugins/flickr-insert' );
function fi_js(){$site_url = get_option( 'siteurl' );$lightbox_script = $site_url . FI_WEB_PATH . '/jquery.lightbox-0.5.pack.js';
wp_enqueue_script( 'jquery-lightbox', $lightbox_script, array('jquery'), '0.5' );}
add_action('wp_head', 'sd_js', 5);
define( 'FI_WEB_PATH', '/wp-content/plugins/flickr-insert' );
function fi_js(){$site_url = get_option( 'siteurl' );$lightbox_script = $site_url . FI_WEB_PATH . '/jquery.lightbox-0.5.pack.js';
wp_enqueue_script( 'jquery-lightbox', $lightbox_script, array('jquery'), '0.5' );}
add_action('wp_head', 'sd_js', 5);
define( 'FI_WEB_PATH', '/wp-content/plugins/flickr-insert' );
function fi_js(){$site_url = get_option( 'siteurl' );$lightbox_script = $site_url . FI_WEB_PATH . '/jquery.lightbox-0.5.pack.js';
wp_enqueue_script( 'jquery-lightbox', $lightbox_script, array('jquery'), '0.5' );}
add_action('wp_head', 'sd_js', 5);
stylesheets
photo by kirainet
define( 'FI_WEB_PATH', '/wp-content/plugins/flickr-insert' );
function fi_css(){$site_url = get_option( 'siteurl' );$css = $site_url . FI_WEB_PATH . '/screen.css';
wp_enqueue_style( 'fi_screen', $css );}
add_action('wp_head', 'fi_js', 5);
define( 'FI_WEB_PATH', '/wp-content/plugins/flickr-insert' );
function fi_css(){$site_url = get_option( 'siteurl' );$css = $site_url . FI_WEB_PATH . '/screen.css';
wp_enqueue_style( 'fi_screen', $css );}
add_action('wp_head', 'fi_js', 5);
define( 'FI_WEB_PATH', '/wp-content/plugins/flickr-insert' );
function fi_css(){$site_url = get_option( 'siteurl' );$css = $site_url . FI_WEB_PATH . '/screen.css';
wp_enqueue_style( 'fi_screen', $css );}
add_action('wp_head', 'fi_js', 5);
photo by tantek
that was an WordPress
plugin development(with pictures)
Simon Wheatleywww.simonwheatley.co.uk