<?php /** * WP Featherlight main plugin class. * * @package WPFeatherlight * @copyright Copyright (c) 2018, Cipher Development, LLC * @license GPL-2.0+ * @since 0.1.0 */ defined( 'WPINC' ) || die; /** * Main plugin class. * * @since 0.1.0 */ class WP_Featherlight { /** * Property for storing the plugin version. * * @since 0.3.0 * @var string */ const VERSION = '1.3.4'; /** * Property for storing a reference to the main plugin file. * * @since 0.3.0 * @var string */ private $file; /** * Property for storing the plugin's directory path. * * @since 0.3.0 * @var string */ private $dir; /** * Property for storing the plugin directory URL. * * @since 0.3.0 * @var string */ private $url; /** * An empty placeholder for referencing the scripts class. * * @since 0.1.0 * @var object */ public $scripts; /** * An empty placeholder for referencing the i18n class. * * @since 0.1.0 * @var object */ public $i18n; /** * An empty placeholder for referencing the meta class. * * @since 0.1.0 * @var object */ public $meta; /** * Set up class properties. * * @since 0.1.0 * @param array $args Arguments to use when setting up class properties. * @return void */ public function __construct( $args ) { $this->file = $args['file']; $this->dir = plugin_dir_path( $this->file ); $this->url = plugin_dir_url( $this->file ); } /** * Retrieve the plugin version number. * * @since 0.3.0 * @access public * @return string */ public function get_version() { return self::VERSION; } /** * Retrieve a trailing slashed path to the plugin directory. * * @since 0.3.0 * @access public * @return string */ public function get_file() { return $this->file; } /** * Retrieve a trailing slashed path to the plugin directory. * * @since 0.3.0 * @access public * @return string */ public function get_dir() { return $this->dir; } /** * Retrieve a trailing slashed URL to the plugin directory. * * @since 0.3.0 * @access public * @return string */ public function get_url() { return $this->url; } /** * Require all global plugin files. * * @since 0.1.0 * @access protected * @return void */ protected function includes() { require_once $this->dir . 'includes/class-scripts.php'; } /** * Require all admin plugin files. * * @since 0.1.0 * @access protected * @return void */ protected function admin_includes() { require_once $this->dir . 'includes/class-i18n.php'; require_once $this->dir . 'admin/class-meta.php'; } /** * Load all required files and get all of our classes running. * * @since 0.1.0 * @access protected * @return void */ protected function instantiate() { $this->scripts = new WP_Featherlight_Scripts( $this->url, self::VERSION ); } /** * Load all required files and get all of our classes running. * * @since 0.1.0 * @access protected * @return void */ protected function admin_instantiate() { $this->i18n = new WP_Featherlight_Language_Loader( 'wp-featherlight', $this->file ); $this->meta = new WP_Featherlight_Admin_Meta; $this->meta->run(); } /** * Run all global WordPress hooks. * * @since 1.0.0 * @return void */ protected function wp_hooks() { /** * Callback defined in includes/class-scripts.php * * @see WP_Featherlight_Scripts::load_css */ add_action( 'wp_enqueue_scripts', array( $this->scripts, 'load_css' ), 20 ); /** * Callback defined in includes/class-scripts.php * * @see WP_Featherlight_Scripts::load_js */ add_action( 'wp_enqueue_scripts', array( $this->scripts, 'load_js' ), 20 ); /** * Callback defined in includes/class-scripts.php * * @see WP_Featherlight_Scripts::maybe_disable */ add_action( 'wp_enqueue_scripts', array( $this->scripts, 'maybe_disable' ), 10 ); /** * Callback defined in includes/class-scripts.php * * @see WP_Featherlight_Scripts::script_helpers */ add_action( 'body_class', array( $this->scripts, 'script_helpers' ), 10 ); } /** * Run all admin WordPress hooks. * * @since 1.0.0 * @return void */ protected function admin_wp_hooks() { /** * Callback defined in includes/class-i18n.php * * @see WP_Featherlight_Language_Loader::load */ add_action( 'admin_head-plugins.php', array( $this->i18n, 'load' ), 10 ); /** * Callback defined in includes/class-i18n.php * * @see WP_Featherlight_Language_Loader::load */ add_action( 'post_submitbox_misc_actions', array( $this->i18n, 'load' ), 5 ); /** * Callback defined in admin/class-meta.php * * @see WP_Featherlight_Admin_Meta::meta_box_view */ add_action( 'post_submitbox_misc_actions', array( $this->meta, 'meta_box_view' ), 10 ); /** * Callback defined in admin/class-meta.php * * @see WP_Featherlight_Admin_Meta::save_meta_boxes */ add_action( 'save_post', array( $this->meta, 'save_meta_boxes' ), 10 ); } /** * Initialize all global functionality. * * @since 1.0.0 * @return void */ public function init() { /** * Provide reliable access to the plugin's functions and methods before * the plugin's global actions, filters, and functionality are initialized. * * @since 1.0.0 * @access public */ do_action( 'wp_featherlight_before_init' ); $this->includes(); $this->instantiate(); $this->wp_hooks(); /** * Provide reliable access to the plugin's functions and methods after * the plugin's global actions, filters, and functionality are initialized. * * @since 1.0.0 * @access public */ do_action( 'wp_featherlight_after_init' ); } /** * Initialize all admin functionality. * * @since 1.0.0 * @return void */ public function admin_init() { /** * Provide reliable access to the plugin's functions and methods before * the plugin's admin actions, filters, and functionality are initialized. * * @since 1.0.0 * @access public */ do_action( 'wp_featherlight_admin_before_init' ); $this->admin_includes(); $this->admin_instantiate(); $this->admin_wp_hooks(); /** * Provide reliable access to the plugin's functions and methods after * the plugin's admin actions, filters, and functionality are initialized. * * @since 1.0.0 * @access public */ do_action( 'wp_featherlight_admin_after_init' ); } /** * Initialize the plugin. * * @since 0.1.0 * @return void */ public function run() { $this->init(); if ( is_admin() ) { $this->admin_init(); } } /** * Runs on plugin activation to set a default admin content label for all * existing posts using the post title. * * @since 0.1.0 * @access public * @return void */ public function activate() { // Nothing yet. } }