*/ class Bootstrap { /** * The unique identifier of this plugin. * * @since 1.0.0 * @access protected * @var string $pluginName The string used to uniquely identify this plugin. */ protected $pluginName; /** * The current version of the plugin. * * @since 1.0.0 * @access protected * @var string $version The current version of the plugin. */ protected $version; /** * Define the core functionality of the plugin. * * @since 1.0.0 */ public function __construct() { $this->version = HURRYT_VERSION; $this->pluginName = 'hurrytimer'; } public function run() { $this->loadDependencies(); $this->setLocale(); $this->maybeUpgrade(); $this->registerPostType(); $this->defineAdminHooks(); $this->defineFrontHooks(); } /** * Autoload the required dependencies for this plugin. * * @since 1.0.0 * @access private */ public function loadDependencies() { require HURRYT_DIR . 'includes/vendor/autoload.php'; \spl_autoload_register(function ($class) { if (strpos($class, __NAMESPACE__) !== 0) { return; } $class = str_replace('Hurrytimer', '', $class); $class = str_replace('\\', '/', $class); require_once HURRYT_DIR . "includes/{$class}.php"; }); } /** * Define the locale for this plugin for internationalization. * * @since 1.0.0 * @access private */ private function setLocale() { add_action( 'plugins_loaded', [ new I18n(), 'load_plugin_textdomain', ] ); } private function maybeUpgrade() { add_action( 'plugins_loaded', function () { Upgrade::getInstance()->run(); } ); } /** * Register all of the hooks related to the admin area functionality * of the plugin. * * @since 1.0.0 * @access private */ private function defineAdminHooks() { $plugin_admin = new Admin( $this->getPluginName(), $this->getVersion() ); add_action('admin_menu', [$plugin_admin, 'menu']); add_action('admin_init', [$plugin_admin, 'settingsBox']); //removeIf(pro) add_filter('add_meta_boxes', [$plugin_admin, 'upgradeBanner']); //endRemoveIf(pro) add_action('admin_enqueue_scripts', [$plugin_admin, 'enqueueStyles']); add_action('admin_enqueue_scripts', [$plugin_admin, 'enqueueScripts']); } /** * Register all of the hooks related to the public-facing functionality * of the plugin. * * @since 1.0.0 * @access private */ private function defineFrontHooks() { $front = new Frontend( $this->getPluginName(), $this->getVersion() ); add_action('wp_enqueue_scripts', [$front, 'enqueue_styles']); add_action('wp_enqueue_scripts', [$front, 'enqueue_scripts']); } /** * The name of the plugin used to uniquely identify it within the context of * WordPress and to define internationalization functionality. * * @since 1.0.0 * @return string The name of the plugin. */ public function getPluginName() { return $this->pluginName; } /** * Retrieve the version number of the plugin. * * @since 1.0.0 * @return string The version number of the plugin. */ public function getVersion() { return $this->version; } public function registerPostType() { $args = array( 'label' => __('All', DOMAIN), 'labels' => array( 'name' => __('Campaigns', DOMAIN), 'singular_name' => __('Campaign', DOMAIN), 'add_new' => __('Add Campaign', DOMAIN), 'add_new_item' => __('Add Campaign', DOMAIN), 'edit' => __('Edit', DOMAIN), 'edit_item' => __('Edit Campaign', DOMAIN), 'new_item' => __('New Campaign', DOMAIN), 'view' => __('View Campaign', DOMAIN), 'view_item' => __('View Campaign', DOMAIN), 'search_items' => __('Search Campaign', DOMAIN), 'not_found' => __('No Campaign', DOMAIN), 'not_found_in_trash' => __( 'No Countdown Timer found in trash', DOMAIN ), 'parent' => __('Parent Campaign', DOMAIN), 'menu_name' => __('All Campaigns', DOMAIN), ), 'public' => false, 'show_ui' => true, 'publicly_queryable' => false, 'exclude_from_search' => true, 'show_in_menu' => 'hurrytimer', 'hierarchical' => false, 'show_in_nav_menus' => false, 'rewrite' => false, 'query_var' => false, 'supports' => array('title'), 'has_archive' => false, 'menu_positon' => 65, ); register_post_type(HURRYT_POST_TYPE, $args); } }