'radio', 'options'=>array('left'=>'Left', 'right'=>'Right', 'none'=>'None'), 'default'=>'none', 'script'=>'', 'help'=>'Sidebar Display Options:'); $meta_box_options['nimbus_sidebar_meta_box']['fields']['sidebar_number'] = array('type'=>'textbox', 'default'=>'', 'script'=>'', 'label'=>'Sidebar #:', 'help'=>'Enter the number of the alternate sidebar you would like to apply. Leave blank to use default.', 'size'=>2); add_action("admin_init", "nimbus_sidebar_meta_box"); add_action('save_post', 'nimbus_save_sidebar_meta_box'); function nimbus_sidebar_meta_box() { $key = 'nimbus_sidebar_meta_box'; global $meta_box_options; $id = $meta_box_options[$key]['id']; $title = $meta_box_options[$key]['title']; $callback = $meta_box_options[$key]['callback']; $post_type = $meta_box_options[$key]['post_type']; $context = $meta_box_options[$key]['context']; $priority = $meta_box_options[$key]['priority']; $arr = explode(',', $post_type); foreach($arr as $v){ add_meta_box($id, $title, $callback, $v, $context, $priority); } } function nimbus_call_sidebar_meta_box() { $key = 'nimbus_sidebar_meta_box'; global $meta_box_options; global $post; $fields = $meta_box_options[$key]['fields']; nimbus_output_metabox_style($meta_box_options['nimbus_sidebar_meta_box']['id'], $meta_box_options['nimbus_sidebar_meta_box']['context']); nimbus_metabox_nonce(); nimbus_draw_fields($fields, $post->ID); } function nimbus_save_sidebar_meta_box($post_id) { $key = 'nimbus_sidebar_meta_box'; global $meta_box_options; global $post; // verify nonce if (isset($_POST['meta_box_nonce'])) { $pid = nimbus_verify_nonce($_POST['meta_box_nonce'], $post_id); if($pid) return $pid; } // check autosave $pid = nimbus_check_autosave($post_id); if($pid) return $pid; // check permissions if (isset($_POST['post_type'])) { $pid = nimbus_verify_permissions($post_id, $_POST['post_type']); if($pid) return $pid; } $fields = $meta_box_options[$key]['fields']; foreach($fields as $k=>$f){ $field_name = $k; if(isset($_POST[$field_name])) $raw_value=$_POST[$field_name]; $type=$f['type']; $value=sanitize_meta_field_value($type,$raw_value); update_post_meta($post_id, $field_name, $value); } } /*** HELPER FUNCTIONS ***/ // Sanitize all input function sanitize_meta_field_value($type,$raw_value) { switch($type){ case 'radio': $value = sanitize_key($raw_value); return $value; break; case 'textbox': $value = sanitize_text_field($raw_value); return $value; break; case 'textarea': $value = wp_kses_post($raw_value); return $value; break; case 'select': $value = sanitize_key( $raw_value ); return $value; break; case 'colorbox': $value = sanitize_hex_color($raw_value); return $value; break; } } ### FORM FIELDS ### function nimbus_draw_fields($fields, $post_id){ foreach($fields as $k=>$f){ $field_name = $k; $field_value = get_post_meta($post_id, $field_name, true); echo '
' . $f['help'] .'
'; echo $f['script']; switch($f['type']){ case 'radio': nimbus_draw_radio_buttons($f['options'], $f['default'], $field_name, $field_value); break; case 'textbox': nimbus_draw_textbox($f['label'], $field_name, $field_value, $f['size']); break; case 'textarea': nimbus_draw_textarea($f['label'], $field_name, $field_value, $f['cols'], $f['rows']); break; case 'select': nimbus_draw_select($f['options'], $f['default'], $field_name, $field_value); break; case 'colorbox': nimbus_draw_colorbox($f['label'], $field_name, $field_value, $f['size']); break; } } } function nimbus_metabox_nonce(){ echo ''; } function nimbus_draw_radio_buttons($options, $default, $field_name, $field_value){ $checked_option = $default; foreach($options as $val=>$lab){ if($field_value == $val && $field_value != $default) $checked_option = $val; } foreach($options as $val=>$lab){ $checked = $val == $checked_option ? 'checked' : ''; $id = $field_name . '-' . $val; echo '