post_types = apply_filters( 'landz_main_metaboxes_post_types', array( 'post' => 'post', 'page' => 'page', ) ); // Add metabox to corresponding post types foreach( $this->post_types as $key => $val ) { add_action( 'add_meta_boxes_'. $val, array( $this, 'post_meta' ), 11 ); } // Save meta add_action( 'save_post', array( $this, 'save_meta_data' ) ); // Load scripts for the metabox add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); // Load custom css for metabox add_action( 'admin_print_styles-post.php', array( $this, 'metaboxes_css' ) ); add_action( 'admin_print_styles-post-new.php', array( $this, 'metaboxes_css' ) ); // Load custom js for metabox add_action( 'admin_footer-post.php', array( $this, 'metaboxes_js' ) ); add_action( 'admin_footer-post-new.php', array( $this, 'metaboxes_js' ) ); } /** * The function responsible for creating the actual meta box. * * @since 1.0.0 */ public function post_meta( $post ) { $obj = get_post_type_object( $post->post_type ); add_meta_box( 'landz-metabox', $obj->labels->singular_name . ' '. __( 'Settings', 'blue-paper' ), array( $this, 'display_meta_box' ), $post->post_type, 'normal', 'default' ); } /** * Enqueue scripts and styles needed for the metaboxes * * @since 1.0.0 */ public static function admin_enqueue_scripts() { wp_enqueue_media(); wp_enqueue_script( 'jquery' ); wp_enqueue_style( 'wp-color-picker' ); wp_enqueue_script( 'wp-color-picker' ); } /** * 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( 'landz_metabox', 'landz_metabox_nonce' ); // Get current post data $post_id = $post->ID; $post_type = get_post_type(); // Get tabs $tabs = $this->tabs_array(); // 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 ( in_array( $post_type, $tab_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 textarea if ( 'textarea' == $type ) { $value = esc_html( $_POST[$id] ); } // Links elseif ( 'link' == $type ) { $value = esc_url( $_POST[$id] ); } // Validate select elseif ( 'select' == $type ) { if ( 'default' == $_POST[$id] ) { $value = ''; } else { $value = $_POST[$id]; } } // Validate media if ( 'media' == $type ) { // Sanitize $value = $_POST[$id]; // Move old landz_post_self_hosted_shortcode_redux to landz_post_self_hosted_media if ( 'landz_post_self_hosted_media' == $id && empty( $_POST[$id] ) && $old = get_post_meta( $post_id, 'landz_post_self_hosted_shortcode_redux', true ) ) { $value = $old; delete_post_meta( $post_id, 'landz_post_self_hosted_shortcode_redux' ); } } // 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 static function helpers( $return = NULl ) { // Return array of WP menus if ( 'menus' == $return ) { $menus = array( __( 'Default', 'blue-paper' ) ); $get_menus = get_terms( 'nav_menu', array( 'hide_empty' => true ) ); foreach ( $get_menus as $menu) { $menus[$menu->term_id] = $menu->name; } return $menus; } // Title styles elseif ( 'title_alignment' == $return ) { $styles = array( '' => __( 'Default', 'blue-paper' ), 'none' => __( 'Center', 'blue-paper' ), 'right' => __( 'Right', 'blue-paper' ), 'left' => __( 'Left', 'blue-paper' ), ); $styles = apply_filters( 'landz_title_styles', $styles ); return $styles; } // Widgets elseif ( 'widget_areas' == $return ) { global $wp_registered_sidebars; $widgets_areas = array( __( 'Default', 'blue-paper' ) ); $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 = 'wpc_'; // Define variable $array = array(); // header Tab $array['header'] = array( 'title' => __( 'Header', 'blue-paper' ), 'settings' => array( 'header_enable' => array( 'title' => __( 'Header', 'blue-paper' ), 'type' => 'select', 'id' => $prefix . 'header_enable', 'description' => __( 'Enable or disable header on this post', 'blue-paper' ), 'options' => array( '' => __( 'Default', 'blue-paper' ), 'true' => __( 'Enable', 'blue-paper' ), 'false' => __( 'Disable', 'blue-paper' ), ), ), 'topbar_enable' => array( 'title' => __( 'Topbar', 'blue-paper' ), 'type' => 'select', 'id' => $prefix . 'topbar_enable', 'description' => __( 'Enable or disable Topbar on this post', 'blue-paper' ), 'options' => array( '' => __( 'Default', 'blue-paper' ), 'true' => __( 'Enable', 'blue-paper' ), 'false' => __( 'Disable', 'blue-paper' ), ), ), ), ); // page title Tab $array['page_title'] = array( 'title' => __( 'Page Title', 'blue-paper' ), 'settings' => array( 'post_title' => array( 'title' => __( 'Enable Title', 'blue-paper' ), 'type' => 'select', 'id' => $prefix . 'page_title', 'description' => __( 'enable or disable page title on this page', 'blue-paper' ), 'options' => array( '' => __( 'Default', 'blue-paper' ), 'true' => __( 'Enable', 'blue-paper' ), 'false' => __( 'Disable', 'blue-paper' ), ), ), ), ); // slider Tab $array['slider'] = array( 'title' => __( 'Slider', 'blue-paper' ), 'settings' => array( 'post_slider_shortcode' => array( 'title' => __( 'Slider Shortcode', 'blue-paper' ), 'type' => 'code', 'id' => $prefix . 'slider_shortcode', 'description' => __( 'Enter a slider shortcode here to display a slider at the top of the page.', 'blue-paper' ), ), ), ); // video Tab $array['video'] = array( 'title' => __( 'Video', 'blue-paper' ), 'post_type' => array('post'), 'settings' => array( 'post_video_embed' => array( 'title' => __( 'Embed Code', 'blue-paper' ), 'description' => __( 'Insert your embed/iframe code.', 'blue-paper' ), 'id' => $prefix . 'post_video_embed', 'type' => 'textarea', 'rows' => '2', ), 'self_hosted_video' => array( 'title' => __( 'Upload Video', 'blue-paper'), 'id' => $prefix . 'self_hosted_video', 'type' => 'media', 'description' => __( 'Upload self hosted video here', 'blue-paper' ), ), ), ); // audio Tab $array['audio'] = array( 'title' => __( 'Audio', 'blue-paper' ), 'post_type' => array('post'), 'settings' => array( 'audio_file_url' => array( 'title' => __( 'Upload Video', 'blue-paper'), 'id' => $prefix . 'audio_file_url', 'type' => 'media', 'description' => __( 'upload self hosted audio here', 'blue-paper' ), ), ), ); // Apply filter & return settings array return apply_filters( 'landz_metabox_array', $array ); } /** * Adds custom CSS for the metaboxes inline instead of loading another stylesheet * * @see assets/metabox.css * @since 1.0.0 */ public static function metaboxes_css() { ?>