define_constants(); register_activation_hook(__FILE__, [$this, 'activate']); register_deactivation_hook(__FILE__, [$this,'deactivate_emailkit']); add_action('plugins_loaded', [$this, 'init_plugin']); } /** * Initializes a singleton instance * * @return \EmailKit */ public static function init() { static $instance = false; if (!$instance) { $instance = new self(); } return $instance; } /** * Define the required plugin constants * * @return void */ public function define_constants() { define('EMAILKIT_VERSION', '1.4.0'); define('EMAILKIT_TEXTDOMAIN', 'emailkit'); define('EMAILKIT_FILE', __FILE__); define('EMAILKIT_PATH', __DIR__); define('EMAILKIT_URL', trailingslashit(plugin_dir_url(EMAILKIT_FILE))); define('EMAILKIT_DIR', trailingslashit(plugin_dir_path(__FILE__))); define('EMAILKIT_TEMAPLTE_DIR', EMAILKIT_DIR . '/includes/admin/'); define('EMAILKIT_ASSETS', EMAILKIT_URL . '/assets'); define('EMAILKIT_CONFIG', []); } /** * Initialize the plugin * * @return void */ public function init_plugin() { do_action('emailkit/before_loaded'); new EmailKit\Admin(); do_action('emailkit/after_loaded'); } /** * Do stuff upon plugin activation */ public function activate() { /** * Save plugin installation time. */ $installed = get_option('emailkit_installed'); if (!$installed) { update_option('emailkit_installed', time()); } /** * Update plugin version. * * @param string $option */ update_option('emailkit_version', EMAILKIT_VERSION); // After Active Plugin CPT menu for EmailKit $cpt = new EmailKit\Admin\CPT(); $cpt->postType(); $cpt->add_role(); flush_rewrite_rules(); } // Deactivate plugin function deactivate_emailkit() { } } /**. * Initializes the main plugin * * @return \EmailKit */ EmailKit::init();