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;
}
} ?>
labels->singular_name;
} else {
$tab_title = $tab['title'];
} ?>
- >
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();