/** * Slider Shortcode Handler */ function youxi_shortcode_slider_cb($atts, $content, $tag) { extract($atts, EXTR_SKIP); $controls = (array) explode(',', $controls); $behaviors = (array) explode(',', $behaviors); $id = esc_attr('carousel-' . Youxi_Shortcode::read_counter($tag)); $attributes = array('id' => $id, 'class' => 'carousel', 'data-interval' => $interval); if (in_array('pause', $behaviors)) { $attributes['data-pause'] = 'hover'; } if (in_array('wrap', $behaviors)) { $attributes['data-wrap'] = true; } $html = ''; foreach ($attributes as $key => $val) { $html .= " {$key}=\"" . esc_attr($val) . "\""; } $o = "<div{$html}>"; /* Reset slide index */ Youxi_Shortcode::reset_counter('slide'); /* Carousel Content */ $slide_content = '<div class="carousel-inner">'; $slide_content .= do_shortcode($content); $slide_content .= '</div>'; $amount = Youxi_Shortcode::read_counter('slide'); /* Carousel Pagers */ $pagers = ''; $arrows = ''; foreach ($controls as $control) { switch ($control) { case 'pagers': if ($amount > 0) { $pagers .= '<ol class="carousel-indicators">'; for ($i = 0; $i < $amount; $i++) { $pagers .= '<li data-target="#' . esc_attr($id) . '" data-slide-to="' . esc_attr($i) . '"'; if (0 == $i) { $pagers .= ' class="active"'; } $pagers .= '></li>'; } $pagers .= '</ol>'; } break; case 'arrows': $arrows .= '<a class="left carousel-control" href="#' . esc_attr($id) . '" data-slide="prev">'; $arrows .= '<span class="glyphicon glyphicon-chevron-left"></span>'; $arrows .= '</a>'; $arrows .= '<a class="right carousel-control" href="#' . esc_attr($id) . '" data-slide="next">'; $arrows .= '<span class="glyphicon glyphicon-chevron-right"></span>'; $arrows .= '</a>'; } } $o .= $pagers; $o .= $slide_content; $o .= $arrows; $o .= '</div>'; return $o; }
/** * Tabs Shortcode Handler */ function youxi_shortcode_tabs_cb($atts, $content, $tag) { $o = ''; $tabs = Youxi_Shortcode::to_array($content, true); if (is_array($tabs) && !empty($tabs)) { /* Reset the tab_content index */ Youxi_Shortcode::reset_counter('tab'); $o .= '<ul class="nav nav-' . esc_attr($atts['type']) . '">'; foreach ($tabs as $index => $tab) { if (isset($tab['tag'], $tab['atts']) && Youxi_Shortcode::prefix('tab') == $tab['tag']) { extract($tab['atts']); $tab_id = sanitize_key($title . Youxi_Shortcode::read_counter($tag) . $index); $o .= '<li' . ($index == 0 ? ' class="active"' : '') . '>'; $o .= '<a href="#' . esc_attr($tab_id) . '" data-toggle="tab">'; $o .= $title; $o .= '</a>'; $o .= '</li>'; } } $o .= '</ul>'; $o .= '<div class="tab-content">'; $o .= do_shortcode($content); $o .= '</div>'; } return $o; }