setup_constants(); self::$instance->includes(); // Including required files self::$instance->init_hooks(); self::$instance->scripts = new EM_WCW_Scripts(); // Script Class self::$instance->block_theme = em_wcw_is_block_theme(); // FSE Theme if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) { self::$instance->admin = new EM_WCW_Admin(); // Admin Class } else { self::$instance->frontend = new EM_WCW_Frontend(); // Frontend Class self::$instance->calendar = new EM_WCW_Calendar(); // Calendar Class } } return self::$instance; } /** * Define constant if not already set. * * @param string $name Constant name. * @param string|bool $value Constant value. */ private function define( $name, $value ) { if ( ! defined( $name ) ) { define( $name, $value ); } } /** * Setup plugin constants * Basic plugin definitions * * @since 1.0 */ private function setup_constants() { global $wpdb; $this->define( 'EM_WCW_VERSION', '1.0.1' ); // Version of plugin $this->define( 'EM_WCW_FILE', __FILE__ ); $this->define( 'EM_WCW_DIR', dirname( __FILE__ ) ); $this->define( 'EM_WCW_URL', plugin_dir_url( __FILE__ ) ); $this->define( 'EM_WCW_BASENAME', basename( EM_WCW_DIR ) ); $this->define( 'EM_WCW_META_PREFIX', '_em_wcw_' ); $this->define( 'EM_WCW_EVENT_POST_TYPE', 'em_wcw_events' ); $this->define( 'EM_WCW_VENUE_POST_TYPE', 'em_wcw_venue' ); $this->define( 'EM_WCW_ORGANIZER_POST_TYPE', 'em_wcw_organizer' ); $this->define( 'EM_WCW_LAYOUT_POST_TYPE', 'em_wcw_layout' ); $this->define( 'EM_WCW_EVENT_CAT', 'em_wcw_events_cat' ); $this->define( 'EM_WCW_EVENT_TAG', 'em_wcw_events_tag' ); $this->define( 'EM_WCW_EVENTS_TBL', $wpdb->prefix.'em_wcw_events' ); $this->define( 'EM_WCW_SETTING_PAGE_URL', add_query_arg( array( 'post_type' => EM_WCW_EVENT_POST_TYPE, 'page' => 'em-wcw-settings', 'tab' => 'general'), 'edit.php' ) ); $this->define( 'EM_WCW_LAYOUT_PAGE_URL', add_query_arg( array( 'post_type' => EM_WCW_EVENT_POST_TYPE, 'page' => 'em-wcw-layouts' ), 'edit.php' ) ); } /** * Load Localisation files * * @since 1.0 */ public function em_wcw_load_textdomain() { // Set filter for plugin's languages directory. $ebm_lang_dir = dirname( plugin_basename( __FILE__ ) ) . '/languages/'; $ebm_lang_dir = apply_filters( 'em_wcw_languages_directory', $ebm_lang_dir ); // Traditional WordPress plugin locale filter. $locale = apply_filters( 'plugin_locale', get_user_locale(), 'webcodexworld-events-manager' ); $mofile = sprintf( '%1$s-%2$s.mo', 'webcodexworld-events-manager', $locale ); // Setup paths to current locale file $mofile_global = WP_LANG_DIR . '/plugins/' . EM_WCW_BASENAME . '/' . $mofile; if ( file_exists( $mofile_global ) ) { // Look in global /wp-content/languages/webcodexworld-events-manager folder load_textdomain( 'webcodexworld-events-manager', $mofile_global ); } else { // Load the default language files load_plugin_textdomain( 'webcodexworld-events-manager', false, $ebm_lang_dir ); } } /** * Include required files * * @since 1.0 */ private function includes() { global $em_wcw_options; // Register Post Type require_once( EM_WCW_DIR . '/includes/em-wcw-post-types.php' ); // General Functions include_once( EM_WCW_DIR . '/includes/em-wcw-functions.php' ); // Event Functions include_once( EM_WCW_DIR . '/includes/em-wcw-event-functions.php' ); // Template Functions include_once( EM_WCW_DIR . '/includes/em-wcw-template-functions.php' ); // Plugin Settings require_once( EM_WCW_DIR . '/includes/admin/settings/em-wcw-register-settings.php' ); $em_wcw_options = em_wcw_get_settings(); // Gettings plugin settings // Class Script require_once( EM_WCW_DIR . '/includes/class-em-wcw-scripts.php' ); // For Admin Side Only if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) { // Class Admin require_once( EM_WCW_DIR . '/includes/admin/class-em-wcw-admin.php' ); // Class Metabox require_once( EM_WCW_DIR . '/includes/admin/metabox/class-em-wcw-metabox.php' ); // Class Shortcode Builder Data require_once( EM_WCW_DIR . '/includes/layout-builder/class-em-wcw-layout-builder-data.php' ); // Setting Page include_once( EM_WCW_DIR . '/includes/admin/settings/em-wcw-welcome-settings.php' ); include_once( EM_WCW_DIR . '/includes/admin/settings/em-wcw-general-settings.php' ); include_once( EM_WCW_DIR . '/includes/admin/settings/em-wcw-evt-single-settings.php' ); include_once( EM_WCW_DIR . '/includes/admin/settings/em-wcw-evt-archive-settings.php' ); include_once( EM_WCW_DIR . '/includes/admin/settings/em-wcw-currency-settings.php' ); include_once( EM_WCW_DIR . '/includes/admin/settings/em-wcw-date-time-settings.php' ); include_once( EM_WCW_DIR . '/includes/admin/settings/em-wcw-maps-settings.php' ); // Shortcode Supports include_once( EM_WCW_DIR . '/includes/layout-builder/shortcode-fields.php' ); } else { // Class Frontend require_once( EM_WCW_DIR . '/includes/frontend/class-em-wcw-frontend.php' ); // Class Calendar require_once( EM_WCW_DIR . '/includes/frontend/class-em-wcw-calendar.php' ); } // Plugin installation file require_once EM_WCW_DIR . '/includes/class-em-wcw-install.php'; // Shortcodes include_once( EM_WCW_DIR . '/includes/shortcodes/em-wcw-events-list.php' ); include_once( EM_WCW_DIR . '/includes/shortcodes/em-wcw-related-events.php' ); include_once( EM_WCW_DIR . '/includes/shortcodes/em-wcw-event-details.php' ); include_once( EM_WCW_DIR . '/includes/shortcodes/em-wcw-shrt-tmpl.php' ); } /** * Hook into actions and filters. * * @since 1.0 */ private function init_hooks() { register_activation_hook( EM_WCW_FILE, array( 'EM_WCW_Install', 'install' ) ); add_action( 'after_setup_theme', array( $this, 'em_wcw_setup_environment' ) ); add_action( 'init', array( $this, 'em_wcb_init_processes' ) ); } /** * Ensure theme and server variable compatibility and setup image sizes. * * @since 1.0 */ public function em_wcw_setup_environment() { // Support Post Thumbnails if ( ! current_theme_supports( 'post-thumbnails' ) ) { add_theme_support( 'post-thumbnails' ); } } /** * Prior Init Processes * * @since 1.0 */ public function em_wcb_init_processes() { // Set up localisation. $this->em_wcw_load_textdomain(); } } endif; // End if class_exists check. /** * The main function for that returns EM_WCW_Events_Manager * * Example: $em_wcw = EM_WCW(); * * @since 1.0 * @return object|EM_WCW_Events_Manager The one true EM_WCW_Events_Manager Instance. */ function EM_WCW() { return EM_WCW_Events_Manager::instance(); } // Get Plugin Running EM_WCW();