class_dir = BEEVENT_THEME_DIR_UIR .'/functions/meta/post-meta/'; $this->types = ''; } /** * The function responsible for creating the actual meta box. * * @since 1.0.0 */ public function post_meta( $post_type ) { $types = array( 'post','speaker','testimonial','sponsor'); $types = apply_filters( 'wmd_main_metaboxes_post_types', $types ); if ( in_array( $post_type, $types ) ) { $obj = get_post_type_object( $post_type ); add_meta_box( 'wmd-metabox', $obj->labels->singular_name . ' '. __( 'Settings', 'beevent' ), array( $this, 'display_meta_box' ), $post_type, 'normal', 'high' ); } $this->types = $types; } /** * Enqueue scripts and styles needed for the metaboxes * * @since 1.0.0 */ public function scripts() { $dir = BEEVENT_THEME_DIR_UIR .'/functions/meta/post-meta/assets/'; // Core WP scripts wp_enqueue_media(); wp_enqueue_style( 'wp-color-picker' ); // Metaboxes JS wp_enqueue_script( 'wmd-metabox', $dir .'js/metabox.js', array( 'media-upload', 'wp-color-picker' ), false, true ); $localize = array( 'reset' => __( 'Reset Settings', 'beevent' ), 'cancel' => __( 'Cancel Reset', 'beevent' ) ); wp_localize_script( 'wmd-metabox', 'wmdMetabox', $localize ); // Metaboxes Styles wp_enqueue_style( 'wmd-metabox', $dir .'css/metabox.css', array( 'wp-color-picker' ), false ); } /** * Renders the content of the meta box. * * @since 1.0.0 */ public function display_meta_box( $post ) { // Add an nonce field so we can check for it later. wp_nonce_field( 'wmd_metabox', 'wmd_metabox_nonce' ); // Get current post data $post_id = $post->ID; $post_type = get_post_type(); // Get tabs $tabs = $this->tabs_array(); // Make sure tabs aren't empty if ( empty( $tabs ) ) { echo '

Hey your settings are empty, something is going on please contact your webmaster

'; return; } // Store tabs that should display on this specific page in an array for use later $active_tabs = array(); foreach ( $tabs as $tab ) { $tab_post_type = isset( $tab['post_type'] ) ? $tab['post_type'] : ''; if ( ! $tab_post_type ) { $display_tab = true; } elseif ( $tab_post_type == $post_type ) { $display_tab = true; } else { $display_tab = false; } if ( $display_tab ) { $active_tabs[] = $tab; } } ?>
id="_tr">

>
$meta_id, 'teeny' => $teeny, 'textarea_rows' => $rows, 'media_buttons' => $media_buttons, ) ); ?>
tabs_array(); $settings = array(); foreach( $tabs as $tab ) { foreach ( $tab['settings'] as $setting ) { $settings[] = $setting; } } // Loop through settings and validate foreach ( $settings as $setting ) { // Vars $value = ''; $id = $setting['id']; $type = isset ( $setting['type'] ) ? $setting['type'] : 'text'; // Make sure field exists and if so validate the data if ( isset( $_POST[$id] ) ) { // Validate text if ( 'text' == $type ) { $value = sanitize_text_field( $_POST[$id] ); } // Validate selects elseif ( 'select' == $type ) { if ( 'default' == $_POST[$id] ) { $value = ''; } else { $value = $_POST[$id]; } } // All else else { $value = $_POST[$id]; } // Update meta if value exists if ( $value && 'on' != $reset ) { update_post_meta( $post_id, $id, $value ); } // Otherwise cleanup stuff else { delete_post_meta( $post_id, $id ); } } } } /** * Helpers * * @since 1.0.0 */ public function helpers( $return = NULl ) { // Return array of WP menus if ( 'menus' == $return ) { $menus = array(); $get_menus = get_terms( 'nav_menu', array( 'hide_empty' => true ) ); $menus['default'] = __( 'Default', 'beevent' ); foreach ( $get_menus as $menu) { $menus[$menu->term_id] = $menu->name; } return $menus; } // Title styles elseif ( 'title_styles' == $return ) { $styles = array( '' => __( 'Default', 'beevent' ), 'centered' => __( 'Centered', 'beevent' ), 'centered-minimal' => __( 'Centered Minimal', 'beevent' ), // 'background-image' => __( 'Background Image', 'beevent' ), 'solid-color' => __( 'Solid Color & White Text', 'beevent' ), ); $styles = apply_filters( 'wmd_title_styles', $styles ); return $styles; } // Widgets elseif ( 'widget_areas' == $return ) { global $wp_registered_sidebars; $widgets_areas = array( __( 'Default', 'beevent' ) ); $get_widget_areas = $wp_registered_sidebars; if ( ! empty( $get_widget_areas ) ) { foreach ( $get_widget_areas as $widget_area ) { $name = isset ( $widget_area['name'] ) ? $widget_area['name'] : ''; $id = isset ( $widget_area['id'] ) ? $widget_area['id'] : ''; if ( $name && $id ) { $widgets_areas[$id] = $name; } } } return $widgets_areas; } } /** * Settings Array * * @since 1.0.0 */ public function tabs_array() { // Prefix $prefix = 'Be_'; // Define variable $array = array(); // Media tab $array['media'] = array( 'title' => __( 'Media', 'beevent' ), 'post_type' => 'post', 'settings' => array( 'post_oembed' => array( 'title' => __( 'Video URL', 'beevent' ), 'description' => __( 'Enter a Video https://www.youtube.com URL that is compatible with WP.', 'beevent' ) .'
'. __( 'Learn More', 'beevent' ) .' →', 'id' => $prefix . 'post_oembed', 'type' => 'text', ), ), ); $array['quote'] = array( 'title' => __( 'Quote', 'beevent' ), 'post_type' => 'post', 'settings' => array( 'post_link' => array( 'title' => __( 'Add New Quote Text ', 'beevent' ), 'id' => $prefix . 'post_quote', 'type' => 'editor', 'description' => __( 'Enter The Content Quote Post Format', 'beevent' ), ), ), ); // Testimonial $array['testimonial'] = array( 'title' => __( 'Testimonial', 'beevent' ), 'post_type' => 'testimonial', 'settings' => array( 'post_link' => array( 'title' => __( 'Designation of Testimonial ', 'beevent' ), 'id' => $prefix . 'tes_designation', 'type' => 'text', 'description' => __( 'Enter Testimonial Designation ', 'beevent' ), ), ), ); // Sponsor $array['sponsor'] = array( 'title' => __( 'Testimonial', 'beevent' ), 'post_type' => 'sponsor', 'settings' => array( 'post_link' => array( 'title' => __( 'Sponsor Link', 'beevent' ), 'id' => $prefix . 'sponsor_link', 'type' => 'text', 'description' => __( 'Enter Sponsor Link Here ', 'beevent' ), ), ), ); $array['speaker'] = array( 'title' => __( 'Speaker', 'beevent' ), 'post_type' => 'speaker', 'settings' => array( 'speaker_destination' => array( 'title' => __( 'Designation of Company ', 'beevent' ), 'id' => $prefix . 'destination', 'type' => 'text', 'description' => __( 'Enter a Sponsor Designation ', 'beevent' ), ), 'speaker_facebook_link' => array( 'title' => __( 'Facebook Page Link', 'beevent' ), 'id' => $prefix . 'facebook_link', 'type' => 'text', 'description' => __( 'Enter Facebook Page Link ', 'beevent' ), ), 'speaker_linkedin_link' => array( 'title' => __( 'Linkedin Page Link', 'beevent' ), 'id' => $prefix . 'linkedin_link', 'type' => 'text', 'description' => __( 'Enter Linkedin Page Link ', 'beevent' ), ), 'speaker_google_link' => array( 'title' => __( 'Google Page Link', 'beevent' ), 'id' => $prefix . 'google_link', 'type' => 'text', 'description' => __( 'Enter Google Page Link ', 'beevent' ), ), 'speaker_twitter_link' => array( 'title' => __( 'Twitter Page Link', 'beevent' ), 'id' => $prefix . 'twitter_link', 'type' => 'text', 'description' => __( 'Enter Twitter Page Link ', 'beevent' ), ), 'speaker_schedule_time' => array( 'title' => __( 'Schedule Time', 'beevent' ), 'id' => $prefix . 'schedule_time', 'type' => 'text', 'description' => __( 'Enter Conference Schedule Time. ', 'beevent' ), ), 'speaker_schedule_times_period' => array( 'title' => __( 'Schedule Time Period', 'beevent' ), 'id' => $prefix . 'schedule_time_period', 'type' => 'select', 'description' => __( 'Select Schedule Time Period .', 'beevent' ), 'options' => array( 'am' => __( 'A M', 'beevent' ), 'pm' => __( 'P M', 'beevent' ), ), ), ), ); // Apply filter & return settings array $array = apply_filters( 'wmd_metabox_array', $array ); return $array; } } } $wmd_post_metaboxes = new MBOX_Post_Metaboxes();