diff --git a/plugin-name/class-plugin-name-admin.php b/plugin-name/class-plugin-name-admin.php new file mode 100644 index 0000000..d2e129b --- /dev/null +++ b/plugin-name/class-plugin-name-admin.php @@ -0,0 +1,206 @@ + + * @license GPL-2.0+ + * @link http://example.com + * @copyright 2013 Your Name or Company Name + */ + +/** + * Plugin Admin class. + * + * TODO: Rename this class to a proper name for your plugin. + * + * @package Plugin_Name_Settings + * @author Your Name + */ +class Plugin_Name_Admin { + + /** + * Instance of this class. + * + * @since 1.0.0 + * + * @var object + */ + protected static $instance = null; + + /** + * Slug of the plugin screen. + * + * @since 1.0.0 + * + * @var string + */ + protected $plugin_screen_hook_suffix = null; + + /** + * Initialize the plugin by setting localization, filters, and administration functions. + * + * @since 1.0.0 + */ + private function __construct() { + + // Call $plugin_slug from initial plugin class. TODO: Rename "Plugin_Name" to the name of your initial plugin class + $plugin = Plugin_Name::get_instance(); + $this->plugin_slug = $plugin->get_plugin_slug(); + + // Load admin style sheet and JavaScript. + add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) ); + add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) ); + + // Add the options page and menu item. + add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) ); + + // Add an action link pointing to the options page. TODO: Rename "plugin-name.php" to the name your plugin + $plugin_basename = plugin_basename( plugin_dir_path( __FILE__ ) . 'plugin-name.php' ); + add_filter( 'plugin_action_links_' . $plugin_basename, array( $this, 'add_action_links' ) ); + + // Define custom functionality. Read more about actions and filters: http://codex.wordpress.org/Plugin_API#Hooks.2C_Actions_and_Filters + add_action( 'TODO', array( $this, 'action_method_name' ) ); + add_filter( 'TODO', array( $this, 'filter_method_name' ) ); + + } + + /** + * Return an instance of this class. + * + * @since 1.0.0 + * + * @return object A single instance of this class. + */ + public static function get_instance() { + + // If the single instance hasn't been set, set it now. + if ( null == self::$instance ) { + self::$instance = new self; + } + + return self::$instance; + } + + /** + * Register and enqueue admin-specific style sheet. + * + * @since 1.0.0 + * + * @return null Return early if no settings page is registered. + */ + public function enqueue_admin_styles() { + + if ( ! isset( $this->plugin_screen_hook_suffix ) ) { + return; + } + + $screen = get_current_screen(); + if ( $screen->id == $this->plugin_screen_hook_suffix ) { + wp_enqueue_style( $this->plugin_slug .'-admin-styles', plugins_url( 'css/admin.css', __FILE__ ), array(), Plugin_Name::VERSION ); + } + + } + + /** + * Register and enqueue admin-specific JavaScript. + * + * @since 1.0.0 + * + * @return null Return early if no settings page is registered. + */ + public function enqueue_admin_scripts() { + + if ( ! isset( $this->plugin_screen_hook_suffix ) ) { + return; + } + + $screen = get_current_screen(); + if ( $screen->id == $this->plugin_screen_hook_suffix ) { + wp_enqueue_script( $this->plugin_slug . '-admin-script', plugins_url( 'js/admin.js', __FILE__ ), array( 'jquery' ), Plugin_Name::VERSION ); + } + + } + + /** + * Register the administration menu for this plugin into the WordPress Dashboard menu. + * + * @since 1.0.0 + */ + public function add_plugin_admin_menu() { + + /* + * Add a settings page for this plugin to the Settings menu. + * + * NOTE: Alternative menu locations are available via WordPress administration menu functions. + * + * Administration Menus: http://codex.wordpress.org/Administration_Menus + * + * TODO: + * + * Change 'Page Title' to the title of your plugin admin page + * Change 'Menu Text' to the text for menu item for the plugin settings page + * Change 'manage_options' to the capability you see fit (http://codex.wordpress.org/Roles_and_Capabilities) + */ + $this->plugin_screen_hook_suffix = add_options_page( + __( 'Page Title', $this->plugin_slug ), + __( 'Menu Text', $this->plugin_slug ), + 'manage_options', + $this->plugin_slug, + array( $this, 'display_plugin_admin_page' ) + ); + + } + + /** + * Render the settings page for this plugin. + * + * @since 1.0.0 + */ + public function display_plugin_admin_page() { + include_once( 'views/admin.php' ); + } + + /** + * Add settings action link to the plugins page. + * + * @since 1.0.0 + */ + public function add_action_links( $links ) { + + return array_merge( + array( + 'settings' => '' . __( 'Settings', $this->plugin_slug ) . '' + ), + $links + ); + + } + + /** + * NOTE: Actions are points in the execution of a page or process + * lifecycle that WordPress fires. + * + * WordPress Actions: http://codex.wordpress.org/Plugin_API#Actions + * Action Reference: http://codex.wordpress.org/Plugin_API/Action_Reference + * + * @since 1.0.0 + */ + public function action_method_name() { + // TODO: Define your action hook callback here + } + + /** + * NOTE: Filters are points of execution in which WordPress modifies data + * before saving it or sending it to the browser. + * + * WordPress Filters: http://codex.wordpress.org/Plugin_API#Filters + * Filter Reference: http://codex.wordpress.org/Plugin_API/Filter_Reference + * + * @since 1.0.0 + */ + public function filter_method_name() { + // TODO: Define your filter hook callback here + } + +} \ No newline at end of file diff --git a/plugin-name/class-plugin-name.php b/plugin-name/class-plugin-name.php index 4e98378..7281f85 100644 --- a/plugin-name/class-plugin-name.php +++ b/plugin-name/class-plugin-name.php @@ -40,6 +40,15 @@ class Plugin_Name { */ protected $plugin_slug = 'plugin-name'; + /** + * Return the plugin slug. + * + * @since 1.0.0 + */ + public function get_plugin_slug() { + return $this->plugin_slug; + } + /** * Instance of this class. * @@ -49,15 +58,6 @@ class Plugin_Name { */ protected static $instance = null; - /** - * Slug of the plugin screen. - * - * @since 1.0.0 - * - * @var string - */ - protected $plugin_screen_hook_suffix = null; - /** * Initialize the plugin by setting localization, filters, and administration functions. * @@ -71,22 +71,10 @@ class Plugin_Name { // Activate plugin when new blog is added add_action( 'wpmu_new_blog', array( $this, 'activate_new_site' ) ); - // Add the options page and menu item. - // add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) ); - - // Add an action link pointing to the options page. TODO: Rename "plugin-name.php" to the name your plugin - // $plugin_basename = plugin_basename( plugin_dir_path( __FILE__ ) . 'plugin-name.php' ); - // add_filter( 'plugin_action_links_' . $plugin_basename, array( $this, 'add_action_links' ) ); - - // Load admin style sheet and JavaScript. - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) ); - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) ); - // Load public-facing style sheet and JavaScript. add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) ); add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); - // Define custom functionality. Read more about actions and filters: http://codex.wordpress.org/Plugin_API#Hooks.2C_Actions_and_Filters add_action( 'TODO', array( $this, 'action_method_name' ) ); add_filter( 'TODO', array( $this, 'filter_method_name' ) ); @@ -167,7 +155,7 @@ class Plugin_Name { * * @since 1.0.0 * - * @param int $blog_id ID of the new blog. + * @param int $blog_id ID of the new blog. */ public function activate_new_site( $blog_id ) { if ( 1 !== did_action( 'wpmu_new_blog' ) ) @@ -186,7 +174,7 @@ class Plugin_Name { * * @since 1.0.0 * - * @return array|false The blog ids, false if no matches. + * @return array|false The blog ids, false if no matches. */ private static function get_blog_ids() { global $wpdb; @@ -230,46 +218,6 @@ class Plugin_Name { load_plugin_textdomain( $domain, FALSE, basename( dirname( __FILE__ ) ) . '/languages' ); } - /** - * Register and enqueue admin-specific style sheet. - * - * @since 1.0.0 - * - * @return null Return early if no settings page is registered. - */ - public function enqueue_admin_styles() { - - if ( ! isset( $this->plugin_screen_hook_suffix ) ) { - return; - } - - $screen = get_current_screen(); - if ( $screen->id == $this->plugin_screen_hook_suffix ) { - wp_enqueue_style( $this->plugin_slug .'-admin-styles', plugins_url( 'css/admin.css', __FILE__ ), array(), self::VERSION ); - } - - } - - /** - * Register and enqueue admin-specific JavaScript. - * - * @since 1.0.0 - * - * @return null Return early if no settings page is registered. - */ - public function enqueue_admin_scripts() { - - if ( ! isset( $this->plugin_screen_hook_suffix ) ) { - return; - } - - $screen = get_current_screen(); - if ( $screen->id == $this->plugin_screen_hook_suffix ) { - wp_enqueue_script( $this->plugin_slug . '-admin-script', plugins_url( 'js/admin.js', __FILE__ ), array( 'jquery' ), self::VERSION ); - } - - } - /** * Register and enqueue public-facing style sheet. * @@ -288,61 +236,6 @@ class Plugin_Name { wp_enqueue_script( $this->plugin_slug . '-plugin-script', plugins_url( 'js/public.js', __FILE__ ), array( 'jquery' ), self::VERSION ); } - /** - * Register the administration menu for this plugin into the WordPress Dashboard menu. - * - * @since 1.0.0 - */ - public function add_plugin_admin_menu() { - - /* - * Add a settings page for this plugin to the Settings menu. - * - * NOTE: Alternative menu locations are available via WordPress administration menu functions. - * - * Administration Menus: http://codex.wordpress.org/Administration_Menus - * - * TODO: - * - * Change 'Page Title' to the title of your plugin admin page - * Change 'Menu Text' to the text for menu item for the plugin settings page - * Change 'manage_options' to the capability you see fit (http://codex.wordpress.org/Roles_and_Capabilities) - */ - $this->plugin_screen_hook_suffix = add_options_page( - __( 'Page Title', $this->plugin_slug ), - __( 'Menu Text', $this->plugin_slug ), - 'manage_options', - $this->plugin_slug, - array( $this, 'display_plugin_admin_page' ) - ); - - } - - /** - * Render the settings page for this plugin. - * - * @since 1.0.0 - */ - public function display_plugin_admin_page() { - include_once( 'views/admin.php' ); - } - - /** - * Add settings action link to the plugins page. - * - * @since 1.0.0 - */ - public function add_action_links( $links ) { - - return array_merge( - array( - 'settings' => '' . __( 'Settings', $this->plugin_slug ) . '' - ), - $links - ); - - } - /** * NOTE: Actions are points in the execution of a page or process * lifecycle that WordPress fires. @@ -369,4 +262,4 @@ class Plugin_Name { // TODO: Define your filter hook callback here } -} +} \ No newline at end of file diff --git a/plugin-name/plugin-name.php b/plugin-name/plugin-name.php index cf69120..ff35a73 100644 --- a/plugin-name/plugin-name.php +++ b/plugin-name/plugin-name.php @@ -31,12 +31,20 @@ if ( ! defined( 'WPINC' ) ) { // TODO: replace `class-plugin-name.php` with the name of the actual plugin's class file require_once( plugin_dir_path( __FILE__ ) . 'class-plugin-name.php' ); +// TODO: replace `class-plugin-admin.php` with the name of the actual plugin's admin class file +if( is_admin() ) { + require_once( plugin_dir_path( __FILE__ ) . 'class-plugin-name-admin.php' ); +} // Register hooks that are fired when the plugin is activated or deactivated. // When the plugin is deleted, the uninstall.php file is loaded. -// TODO: replace Plugin_Name with the name of the plugin defined in `class-plugin-name.php` +// TODO: replace Plugin_Name with the name of the class defined in `class-plugin-name.php` register_activation_hook( __FILE__, array( 'Plugin_Name', 'activate' ) ); register_deactivation_hook( __FILE__, array( 'Plugin_Name', 'deactivate' ) ); -// TODO: replace Plugin_Name with the name of the plugin defined in `class-plugin-name.php` +// TODO: replace Plugin_Name with the name of the class defined in `class-plugin-name.php` add_action( 'plugins_loaded', array( 'Plugin_Name', 'get_instance' ) ); +// TODO: replace Plugin_Name_Admin with the name of the class defined in `class-plugin-name-admin.php` +if( is_admin() ) { + //add_action( 'plugins_loaded', array( 'Plugin_Name_Admin', 'get_instance' ) ); +} \ No newline at end of file