A WordPress Plugin is a program, or a set of one or more functions, written in the PHP scripting language, that adds a specific set of features or services to the WordPress weblog, which can be seamlessly integrated with the weblog using access points and methods provided by the WordPress Plugin Application Program Interface (API).
<?php /* Plugin Name: WordCamp Poznań 2011 Plugin URI: http://wordpress.org/extend/plugins/wordcamp-poznan-2011/ Description: Wtyczka na konferencję WordCamp Poznań 2011 Author: Vokiel Version: 0.1 Author URI: http://blog.vokiel.com/plugins/wordcamp-poznan-2011/ Licence: GPL2 */ class WordCampPoznan2011 { // WordCamPoznan2001 Plugin body }
SELECT `option_value` FROM `wp_options` WHERE `option_name`='active_plugins';
Serializowany
a:1:{i:0;s:41:"wordcamppoznan2011/wordcamppoznan2011.php";}
Deserializowany
Array( [0] => wordcamppoznan2011/wordcamppoznan2011.php )
// 1. Sprawdzenie czy klasa została już zdefiniowana if ( !class_exists("WordCampPoznan2011") ){ // ok, droga wolna class WordCampPoznan2011 { function init(){} } $wcpoz = new WordCampPoznan2011(); if ( $wcpoz ) { add_action('publish_post', array($wcpoz, 'init')); } // dla metod statycznych ( według PHP Callback) add_action('publish_post', array('WordCampPoznan2011', 'init')); } else { /* nazwa zajęta i używana */ } // 3. Nie ech***my poza funkcjami! (headers already sent by...) echo 'oj'; // Ominięcie znacznika zamykającego PHP (?>)
add_action( $hook, $function_to_add, $priority, $accepted_args );
remove_action( $hook, $function_to_add );
add_filter( $hook, $function_to_add, $priority, $accepted_args );
remove_filter( $hook, $function_to_add );
priority (10) - 1-10: kolejność wg wartości 1 - pierwsza, 10 - ostatnia
accepted_args (1) - ilość akceptowanych argumentów funkcji
wp-includes/pluggable.php - lista: http://codex.wordpress.org/Pluggable_Functions
if ( !class_exists("WordCampPoznan2011") ){ // ok, droga wolna class WordCampPoznan2011 { function init(){ echo '<p class="pwrdby_wcpon"> Powerd by <strong>WordCampPoznan2011</strong> </p>'; } } $wcpoz = new WordCampPoznan2011(); if ( $wcpoz ) { add_action('in_admin_footer', array($wcpoz, 'init')); } }
if ( !class_exists("WordCampPoznan2011") ){ // ok, droga wolna class WordCampPoznan2011 { function init($input){ echo $input.'<p class="pwrdby_wcpon"> Powerd by <strong>WordCampPoznan2011</strong> </p>'; } } $wcpoz = new WordCampPoznan2011(); if ( $wcpoz ) { add_filter('the_content', array($wcpoz, 'init')); } }
add_options_page($page_title, $menu_title, $capability, $menu_slug, $function);
add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url,$position); add_submenu_page($parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function);
add_strona_page($page_title, $menu_title, $capability, $menu_slug, $function);
class WordCampPoznan2011 { public static function init_admin_menu(){ add_options_page('WordCamp Poznań 2011', 'WordCamp Poznań', 'manage_options', 'wordcamp-poznan', array('WordCampPoznan2011', 'wordcamp_poznan_options') ); add_menu_page( 'WordCamp Poznań 2011 - Main', 'WordCamp', 'manage_options', 'wordcamp', array('WordCampPoznan2011', 'wordcamp_poznan_mainmenu'), plugin_dir_url( __FILE__ ).'/img/wordpress-logo-16-blue.png' ); add_submenu_page( 'wordcamp', 'WordCamp - Ustawienia', 'Ustawienia', 'manage_options', 'wordcamp-ustawienia', array('WordCampPoznan2011', 'wordcamp_poznan_options') ); } public static function wordcamp_poznan_options(){ echo '<h2>WordCamp Poznań 2011 Admin Menu</h2>'; } public static function wordcamp_poznan_mainmenu(){ echo '<h2>WordCamp Poznań 2011 - Main Menu</h2>'; } } add_action('admin_menu', array('WordCampPoznan2011','init_admin_menu'));
function get_comments_count() { global $wpdb; $comments = $wpdb->get_row("SELECT count(`comment_approved`) AS `cmt_count` FROM ".$wpdb->comments." WHERE `comment_approved` = '1' GROUP BY `comment_approved`", ARRAY_A); return $comments['cmt_count']; }
add_option( $name, $value, $description, $autoload )
get_option( $option_name )
update_option( $option_name, $new_value )
delete_option( $option_name )
define('WORDCAMP_PLUGIN_VERSION','0.1.7'); define('WORDCAMP_PLUGIN_LONGNAME','wordcamp'); define('WORDCAMP_PLUGIN_SHORTNAME','wcpoz'); define('WORDCAMP_PLUGIN_OPTIONS','WordCampPoznan2011PluginOptions'); define('WORDCAMP_PLUGIN_BASEDIR',dirname(plugin_basename(__FILE__))); define('WORDCAMP_PLUGIN_BASEURL',plugins_url('',__FILE__));
protected static $default_options = array( 'twitter_hashtag' => WORDCAMP_PLUGIN_SHORTNAME, 'last_version' => WORDCAMP_PLUGIN_VERSION );
public static function plugin_activate(){ $options = get_option(WORDCAMP_PLUGIN_OPTIONS); if ( empty($options['last_version']) || $options['last_version'] == WORDCAMP_PLUGIN_VERSION ){ $options = self::$default_options; update_option(WORDCAMP_PLUGIN_OPTIONS,$options); } }
register_activation_hook( __FILE__, array('WordCampPoznan2011','plugin_activate') );
public static function plugin_deactivate(){ $options = get_option(WORDCAMP_PLUGIN_OPTIONS); if ( $options['last_activate'] ){ $options['last_activate'] = ''; } update_option(WORDCAMP_PLUGIN_OPTIONS,$options); }
register_deactivation_hook( __FILE__, array('WordCampPoznan2011','plugin_deactivate') );
$options = get_option(WORDCAMP_PLUGIN_OPTIONS); if ( !empty($_POST['update_wordcamp2011_options']) ){ foreach ( $options as $opt_key => $opt_value){ if ( isset($_POST[$opt_key]) ){ $options[$opt_key] = $_POST[$opt_key]; } } update_option(WORDCAMP_PLUGIN_OPTIONS, $options); }
wp_register_script( $handle, $src, $deps, $ver, $in_footer )
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
wp_register_style( $handle, $src, $deps, $ver, $media );
wp_enqueue_style( $handle, $src, $deps, $ver, $media );
public static function options_link($links){ if ( !current_user_can('manage_options') ){ return $links; } $settings_link = '<a href="'.admin_url('admin.php').'?page=wordcamp" title="Ustawienia" class="edit"<Ustawienia</a>'; array_unshift( $links, $settings_link ); return $links; }
add_filter('plugin_action_links_'.WORDCAMP_PLUGIN_BASEDIR.'/wordcamppoznan2011.php', array('WordCampPoznan2011','options_link') );
public static $wcpoz; public static function init_admin_menu(){ WordCampPoznan2011::$wcpoz = add_options_page('WordCamp Poznań 2011', 'WordCamp Poznań', 'manage_options', 'wordcamp-poznan', array('WordCampPoznan2011', 'wordcamp_poznan_options')); add_filter( 'contextual_help', array('WordCampPoznan2011','contextual_help'), 10, 3 ); } public static function contextual_help($contextual_help, $screen_id, $screen){ if ($screen_id == WordCampPoznan2011::$wcpoz) { $contextual_help = '<p>WordCamp Poznań 2011 - Pomoc kontekstowa.</p>'; } return $contextual_help; }
public static function add_dashboard_widget(){ if ( !current_user_can('manage_options') ){ return $links; } $options = get_option(WORDCAMP_PLUGIN_OPTIONS); echo '
add_action('wp_dashboard_setup', array('WordCampPoznan2011','add_dashboard') );
public static function add_adminbar() { global $wp_admin_bar; if ( !current_user_can('manage_options') || !is_admin_bar_showing()){ return; } $wp_admin_bar->add_menu(array( 'id' => 'wordcamp', 'title' => 'WordCamp', 'href' => admin_url('admin.php').'?page=wordcamp')); $wp_admin_bar->add_menu(array( 'parent' => 'wordcamp', 'title' => 'Informacje', 'href' => admin_url('admin.php').'?page=wordcamp')); $wp_admin_bar->add_menu(array( 'parent' => 'wordcamp', 'title' => 'Ustawienia', 'href' => admin_url('admin.php').'?page=wordcamsettings')); }
add_action('admin_bar_menu', array('WordCampPoznan2011','add_adminbar'),100);