Вы находитесь на странице: 1из 67

WordPress plugin development

(with pictures)
www.simonwheatley.co.uk

Simon Wheatley

WordPress plugin development


(with pictures)
www.simonwheatley.co.uk

Simon Wheatley

plugins

photo by djking

anatomy of a plugin le?

photo by striatic

<?php /* Plugin Name: Flickr Insert Plugin URI: http://www.simonwheatley.co.uk/ wordpress/ Version: 1.0 Description: Allows you to embed Flickr photos and photosets. Author: Simon Wheatley Author URI: http://www.simonwheatley.co.uk/ Copyright 2007 Simon Wheatley (any licensing legal gubbins.) */ ?>

<?php /* Plugin Name: Flickr Insert */ ?>

actions

photo from Davidson College

lters

photo by BlueskyPol

actions

function bi_insert_bg_css() { $img_id = bi_get_bg_img_id(); $img_path = bi_img_path( $img_id ); $css $css $css $css $css = .= .= .= .= "<style type='text/css'>\n"; "body {\n"; "background-image: url($img_path)\n"; "}\n"; "</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 $css $css $css $css = .= .= .= .= "<style type='text/css'>\n"; "body {\n"; "background-image: url($img_path)\n"; "}\n"; "</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 $css $css $css $css = .= .= .= .= "<style type='text/css'>\n"; "body {\n"; "background-image: url($img_path)\n"; "}\n"; "</style>\n";

echo $css; } add_action('wp_head', 'bi_insert_bg_css');

lters

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

lters

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 queries add_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 shortcode function fi_shortcode( $atts, $content ) { $photoset_id = fi_photoset_id( $content ); $html = fi_photoset( $photoset_id ); return $html; } // Register the Flickr shortcode add_shortcode('flickr-photoset', 'fi_shortcode');

// Parse the photoset shortcode function fi_shortcode( $atts, $content ) { $photoset_id = fi_photoset_id( $content ); $html = fi_photoset( $photoset_id ); return $html; } // Register the Flickr shortcode add_shortcode('flickr-photoset', 'fi_shortcode');

// Parse the photoset shortcode function fi_shortcode( $atts, $content ) { $photoset_id = fi_photoset_id( $content ); $html = fi_photoset( $photoset_id ); return $html; } // Register the Flickr shortcode add_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)
www.simonwheatley.co.uk

Simon Wheatley

Вам также может понравиться