get_controller( 'settings' ), 'action_save' ) ); add_action( 'admin_init', array( $this, 'admin_init' ) ); add_action( 'admin_menu', array( $this, 'admin_menu' ) ); add_action( 'manage_posts_custom_column', array( $this->get( 'events' ), 'get_event_taxonomy' ) ); add_action( 'manage_posts_custom_column', array( $this->get( 'column' ), 'get_column_columns' ) ); add_action( 'current_screen', array( Core::get_instance(), 'current_screen' ) ); add_action( 'pre_get_posts', array( $this->get( 'column' ), 'clientarea_default_order' ), 9 ); //add media in frontend WP add_action( 'wp_enqueue_scripts', array( Core::get_instance(), 'wp_enqueue_scripts' ) ); //add media in admin WP add_action( 'admin_enqueue_scripts', array( Core::get_instance(), 'admin_enqueue_scripts' ) ); add_action( 'widgets_init', array( $this, 'register_widgets' ) ); // Manage event/column columns add_filter( 'manage_edit-mp-event_columns', array( $this->get( 'events' ), 'set_event_columns' ) ); add_filter( 'manage_edit-mp-column_columns', array( $this->get( 'column' ), 'set_column_columns' ) ); // Duplicate Event add_filter( 'post_row_actions', array( $this->get( 'events' ), 'post_row_actions' ), 999, 2 ); add_action( 'post_action_mptt_duplicate_event', array( $this->get( 'events' ), 'post_action_mptt_duplicate_event' ) ); // post_class filter add_filter( 'post_class', 'mptt_post_class', 15, 3 ); // to display events with other posts on author page add_filter( 'pre_get_posts', array( Post::get_instance(), 'pre_get_posts' ), 9 ); add_filter( 'plugin_row_meta', array( __CLASS__, 'plugin_row_meta' ), 10, 2 ); } /** * Register widgets and sidebar */ public function register_widgets() { $template = get_option( 'template' ); if ( $template != 'twentyfourteen' && Settings::get_instance()->is_plugin_template_mode() ) { register_sidebar( array( 'name' => __( 'Timetable Sidebar', 'mp-timetable' ), 'id' => "mptt-sidebar", 'description' => __( 'Timetable', 'mp-timetable' ), 'class' => 'sidebar-container', 'before_widget' => '
  • ', 'after_widget' => "
  • \n", 'before_title' => '

    ', 'after_title' => "

    \n" ) ); } register_widget( 'timetable\classes\widgets\Timetable_widget' ); } /** * Register template_action */ public function register_template_action() { add_action( 'mptt_sidebar', 'mptt_sidebar', 10 ); add_filter( 'mptt_widget_settings', 'mptt_widget_settings', 10, 1 ); add_action( 'mptt-single-mp-column-before-wrapper', 'mptt_theme_wrapper_before' ); add_action( 'mptt-single-mp-column-after-wrapper', 'mptt_theme_wrapper_after' ); add_action( 'mptt-single-mp-event-before-wrapper', 'mptt_theme_wrapper_before' ); add_action( 'mptt-single-mp-event-after-wrapper', 'mptt_theme_wrapper_after' ); // Event template action add_action( 'mptt_event_item_content', 'mptt_event_template_content_title', 10 ); add_action( 'mptt_event_item_content', 'mptt_event_template_content_thumbnail', 20 ); add_action( 'mptt_event_item_content', 'mptt_event_template_content_post_content', 30 ); add_action( 'mptt_event_item_content', 'mptt_event_template_content_time_title', 40 ); add_action( 'mptt_event_item_content', 'mptt_event_template_content_time_list', 50 ); add_action( 'mptt_event_item_content', 'mptt_event_template_content_comments', 60 ); // Column template action add_action( 'mptt_single_column_template_content', 'mptt_column_template_content_title', 10 ); add_action( 'mptt_single_column_template_content', 'mptt_column_template_content_post_content', 20 ); add_action( 'mptt_single_column_template_content', 'mptt_column_template_content_events_list', 30 ); //Shortcode template action add_action( 'mptt_shortcode_template_before_content', 'mptt_shortcode_template_before_content', 10 ); add_action( 'mptt_shortcode_template_content', 'mptt_shortcode_template_content_filter', 10 ); add_action( 'mptt_shortcode_template_content', 'mptt_shortcode_template_content_static_table', 20 ); add_action( 'mptt_shortcode_template_content', 'mptt_shortcode_template_content_responsive_table', 30 ); add_action( 'mptt_shortcode_template_after_content', 'mptt_shortcode_template_after_content', 10 ); // Widget actions add_action( 'mptt_widget_template_before_content', 'mptt_widget_template_before_content', 10 ); add_action( 'mptt_widget_template_content', 'mptt_widget_template_content', 10 ); add_action( 'mptt_widget_template_after_content', 'mptt_widget_template_after_content', 10 ); } /** * Elementor Init hook. */ public function elementor_loaded() { add_action( 'elementor/frontend/after_enqueue_scripts', [ Core::get_instance(), 'elementor_enqueue_scripts' ] ); new Widgets_Manager(); } /** * Init hook */ public function init() { // Init sort codes Shortcode::get_instance()->init(); // Register post type Core::get_instance()->register_all_post_type(); // Register taxonomy all Core::get_instance()->register_all_taxonomies(); // route url Core::get_instance()->wp_ajax_route_url(); if ( Settings::get_instance()->is_plugin_template_mode() ) { // plugin mode add_filter( 'template_include', array( View::get_instance(), 'template_loader' ), 99 ); } else { //theme mode add_filter( 'single_template', array( Core::get_instance(), 'modify_single_template' ), 99 ); } add_action( 'mp_library', array( Shortcode::get_instance(), 'integration_motopress' ), 20, 1 ); Core::get_instance()->init_plugin_version(); add_filter( 'body_class', array( $this, 'browser_body_class' ) ); add_filter( 'the_tags', array( $this->get( 'events' ), 'the_tags' ), 10, 5 ); add_filter( 'the_category', array( $this->get( 'events' ), 'the_category' ), 10, 3 ); if ( function_exists('register_block_type') ) { new Timetable_Block(); } } /** * Hooks for admin panel */ public function admin_init() { //add buttons to mce add_filter( "mce_external_plugins", array( $this, "mce_external_plugins" ) ); add_filter( 'mce_buttons', array( $this, "mce_buttons" ) ); Core::get_instance()->init_plugin_version(); add_action( 'before_delete_post', array( Post::get_instance(), 'before_delete_custom_post' ) ); add_action( 'add_meta_boxes', array( Post::get_instance(), 'add_meta_boxes' ) ); add_action( 'save_post', array( Post::get_instance(), 'save_custom_post' ), 40, 2 ); add_action( 'wp_ajax_route_url', array( Core::get_instance(), "wp_ajax_route_url" ) ); add_action( 'wp_ajax_install_plugin_ajax', array( Core::get_instance(), 'wp_ajax_install_plugin_ajax' ) ); register_importer( 'mptt-importer', 'Timetable', __( 'Import Timetable events, categories, tags and images.', 'mp-timetable' ), array( Import::get_instance(), 'import' ) ); } /** * Registered page in admin wp */ public function admin_menu() { //Timetable add_menu_page( __( 'Timetable', 'mp-timetable' ), __( 'Timetable', 'mp-timetable' ), 'edit_posts', 'edit.php?post_type=mp-event', '', 'dashicons-calendar', '59.51' ); //Events add_submenu_page( 'edit.php?post_type=mp-event', __( 'Events', 'mp-timetable' ), __( 'Events', 'mp-timetable' ), 'edit_posts', 'edit.php?post_type=mp-event' ); //Add Event add_submenu_page( 'edit.php?post_type=mp-event', __( 'Add Event', 'mp-timetable' ), __( 'Add Event', 'mp-timetable' ), 'edit_posts', 'post-new.php?post_type=mp-event' ); //Columns add_submenu_page( 'edit.php?post_type=mp-event', __( 'Columns', 'mp-timetable' ), __( 'Columns', 'mp-timetable' ), 'edit_posts', 'edit.php?post_type=mp-column' ); //Add Column add_submenu_page( 'edit.php?post_type=mp-event', __( 'Add Column', 'mp-timetable' ), __( 'Add Column', 'mp-timetable' ), 'edit_posts', 'post-new.php?post_type=mp-column' ); //Event Categories add_submenu_page( 'edit.php?post_type=mp-event', __( 'Event Categories', 'mp-timetable' ), __( 'Event Categories', 'mp-timetable' ), 'manage_categories', 'edit-tags.php?taxonomy=mp-event_category&post_type=mp-event' ); //Event Tags add_submenu_page( 'edit.php?post_type=mp-event', __( 'Event Tags', 'mp-timetable' ), __( 'Event Tags', 'mp-timetable' ), 'manage_categories', 'edit-tags.php?taxonomy=mp-event_tag&post_type=mp-event' ); //Settings add_submenu_page( 'edit.php?post_type=mp-event', __( 'Settings', 'mp-timetable' ), __( 'Settings', 'mp-timetable' ), 'manage_options', 'mptt-settings', array( $this->get_controller( 'settings' ), 'action_content' ) ); //Export / Import add_submenu_page( 'edit.php?post_type=mp-event', __( 'Export / Import', 'mp-timetable' ), __( 'Export / Import', 'mp-timetable' ), 'import', 'mptt-import', array( $this->get_controller( 'import' ), 'action_content' ) ); //Help add_submenu_page( 'edit.php?post_type=mp-event', __( 'Help & Shortcode', 'mp-timetable' ), __( 'Help & Shortcode', 'mp-timetable' ), 'edit_posts', 'mptt-help', array( $this->get_controller( 'help' ), 'action_content' ) ); } /** * Connect js for MCE editor * * @param $plugin_array * * @return mixed */ public function mce_external_plugins( $plugin_array ) { $path = Mp_Time_Table::get_plugin_url( 'media/js/mce-timeTable-buttons' . $this->get_prefix() . '.js' ); $plugin_array[ 'mp_timetable' ] = $path; return $plugin_array; } /** * Add button in MCE editor * * @param $buttons * * @return mixed */ public function mce_buttons( $buttons ) { array_push( $buttons, 'addTimeTableButton' ); return $buttons; } /** * Browser body class * * @param $classes * * @return array */ public function browser_body_class( $classes ) { global $is_IE; if ( $is_IE ) { $classes[] = 'mprm_ie_browser'; } return $classes; } /** * Set js */ public function set_html_js_class() { echo View::get_instance()->get_template_html('events/no-script'); } /** * Show row meta on the plugin screen. * * @return array */ public static function plugin_row_meta( $links, $file ) { if ( MP_TT_PLUGIN_BASENAME === $file ) { $row_meta = array( 'help' => '' . esc_html__( 'Help', 'mp-timetable' ) . '', 'review' => '' . esc_html__( 'Leave a Review', 'mp-timetable' ) . ' ★★★★★', ); return array_merge( $links, $row_meta ); } return (array) $links; } }