'section-widget-tabbed', 'description' => __('Display section-specific content in tabs.')); $control_ops = array('width' => 400); $this->WP_Widget('section-tabbed', __('Section (Tabbed)'), $widget_ops, $control_ops); } function widget( $args, $instance ) { extract($args); extract(wp_parse_args((array) get_option('section-widget-settings'), array( 'heightfix' => false // This is all I care about ))); if(isset($_GET['swt-scope-test'])) { echo $before_widget . '
Section Widget Scope Test
' . $after_widget; return; } // olt_checklist_conditions_check is the replacement for $should_display if(olt_checklist_conditions_check($instance['conditions'])) { if(count($instance['tabs']) == 0) return; $list = ''; $content = ''; foreach($instance['tabs'] as $id => $tab) { $list .= "
  • {$tab['title']}
  • "; $content .= "
    ".do_shortcode($tab['body']).'
    '; } $heightFixClass = ($heightfix)? ' class="swt-height-fix"' : ''; $html = "".$list.''.$content; echo $before_widget; if($instance['display-title']){ echo $before_title; echo apply_filters('widget_title', $instance['title']); echo $after_title; } echo '
    '; echo apply_filters('widget_text', $html); echo '
    '; echo $after_widget; } } function update( $new_instance, $old_instance ) { // Mostly borrowed from text widget $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['display-title'] = (bool) $new_instance['display-title']; $instance['conditions'] = is_array($new_instance['conditions'])? $new_instance['conditions'] : array(); $instance['conditions']['special-pages'] = is_array($new_instance['conditions']['special-pages'])? $new_instance['conditions']['special-pages'] : array(); $instance['conditions']['pages'] = is_array($new_instance['conditions']['pages'])? $new_instance['conditions']['pages'] : array(); $instance['conditions']['categories'] = is_array($new_instance['conditions']['categories'])? $new_instance['conditions']['categories'] : array(); $instance['conditions']['tags'] = is_array($new_instance['conditions']['tags'])? $new_instance['conditions']['tags'] : array(); $instance['tabs'] = array(); if(is_array($new_instance['tabs'])) { $tabs = array(); if(isset($new_instance['order']) && $new_instance['order'] != '') { // order=1&order=0&order=2... $order = explode('&', str_replace('order=', '', $new_instance['order'])); foreach($order as $i) { if(isset($new_instance['tabs'][intval($i)])) { $tabs[] = $new_instance['tabs'][intval($i)]; unset($new_instance['tabs'][intval($i)]); } } } $tabs = array_merge($tabs, $new_instance['tabs']); foreach($tabs as $tab){ $title = strip_tags($tab['title']); if ( current_user_can('unfiltered_html') ) $body = $tab['body']; else $body = wp_filter_post_kses( $tab['body'] ); $instance['tabs'][] = array( 'title' => $title, 'body' => $body ); } } // Processing tabs below return $instance; } function form( $instance ) { // Provide the defaults here $instance = wp_parse_args((array) $instance, array( 'title' => '', 'display-title' => true, 'tabs' => array(), 'conditions' => array( 'special-pages' => array(), 'pages' => array(), 'categories' => array(), 'tags' => array() ) )); // Make sure second level options are actually arrays foreach($instance['tabs'] as $i => $v) if(!is_array($v)) $instance['tabs'][$i] = array(); foreach($instance['conditions'] as $i => $v) if(!is_array($v)) $instance['conditions'][$i] = array(); $title = strip_tags($instance['title']); $display_title = (bool) $instance['display-title']; $special_pages = $instance['conditions']['special-pages']; $pages = $instance['conditions']['pages']; $categories = $instance['conditions']['categories']; $tags = $instance['conditions']['tags']; $tabs = is_array($instance['tabs'])? $instance['tabs'] : array(); foreach($tabs as $i => $tab) { $tabs[$i]['title'] = strip_tags($tab['title']); $tabs[$i]['body'] = format_to_edit($tab['body']); } ?>

    " />

    $this->get_field_id('conditions'), 'name' => $this->get_field_name('conditions'), 'special-pages' => array('selected' => $special_pages), 'pages' => array('selected' => $pages), 'categories' => array('selected' => $categories), 'tags' => array('selected' => $tags) )); ?>
    $tab): ?>
    " type="text" value="" />

    Delete this tab

    Formatting Help: You may use HTML in this widget, and it is probably a good idea to wrap the content in your own <div> to aid styling. Shortcodes are also allowed, but please beware not all of them will function properly on archive pages.

    'redmond', 'scope' => '.swt-outter', 'heightfix' => false ))); if(is_admin()){ if($theme == 'none') $theme = 'base'; wp_enqueue_style('section-widget-admin', plugins_url('section-widget/section-widget-admin.dev.css')); wp_enqueue_style("section-widget-theme-{$theme}", plugins_url("section-widget/themes/theme-loader.php?theme={$theme}&scope=.olt-swt-designer")); wp_enqueue_script('section-widget-admin', plugins_url('section-widget/section-widget-admin.dev.js'), array('jquery','jquery-ui-tabs','jquery-ui-sortable')); } else { if($theme != 'none') wp_enqueue_style("section-widget-theme-{$theme}", plugins_url("section-widget/themes/theme-loader.php?theme={$theme}&scope=").urlencode($scope)); wp_enqueue_script('section-widget', plugins_url('section-widget/section-widget.dev.js'), array('jquery','jquery-ui-tabs')); } } ### Function: Init Section Widget add_action('widgets_init', 'tabbed_section_widget_init'); ?>