function msp_get_the_resized_attachment($attach_id = null, $width = null, $height = null, $crop = null, $quality = 100) { $image_src = msp_get_the_resized_attachment_src($attach_id, $width, $height, $crop, $quality); return $image_src ? '<img src="' . $image_src . '" alt="" />' : ''; }
/** * Filter the default gallery shortcode output. * * @see gallery_shortcode() * * @param string $output The gallery output. Default empty. * @param array $attr Attributes of the gallery shortcode. */ public function gallery_output($output, $attr) { if (!(isset($attr['masterslider']) && ($attr['masterslider'] == 'yes' || $attr['masterslider'] == 'true'))) { return $output; } $post = get_post(); // Sanitize orderby if (isset($attr['orderby'])) { $attr['orderby'] = sanitize_sql_orderby($attr['orderby']); if (!$attr['orderby']) { unset($attr['orderby']); } } $atts = shortcode_atts(array('order' => 'ASC', 'orderby' => 'menu_order ID', 'id' => $post ? $post->ID : 0, 'width' => '960', 'height' => '540', 'loop' => 'false', 'autoplay' => 'false', 'auto_height' => 'false', 'skin' => 'ms-skin-default', 'preload' => 2, 'include' => '', 'exclude' => '', 'link' => '', 'class' => '', 'target' => '_self', 'delay' => '3', 'caption' => 'true', 'thumbs_type' => 'thumbs', 'thumbs' => 'true', 'thumbs_align' => 'bottom', 'thumbs_width' => 140, 'thumbs_height' => 80, 'thumbs_space' => 2, 'thumbs_inset' => 'false', 'thumbs_autohide' => 'false', 'thumbs_margin' => 2), $attr, 'masterslider_gallery'); // You can filter the following attrs by 'shortcode_atts_masterslider_gallery' filter hook (http://codex.wordpress.org/Function_Reference/shortcode_atts) $id = intval($atts['id']); if ('RAND' == $atts['order']) { $atts['orderby'] = 'none'; } // Collect slider options in $slider_attrs array $slider_attrs = array('width' => $atts['width']); $slider_attrs['height'] = $atts['height']; $slider_attrs['class'] = 'master-slider-gallery ' . esc_attr($atts['class']); $slider_attrs['id'] = 0; $slider_attrs['loop'] = $atts['loop']; $slider_attrs['autoplay'] = $atts['autoplay']; $slider_attrs['slideinfo_margin'] = '0'; $slider_attrs['slideinfo_height'] = '30'; $slider_attrs['skin'] = $atts['skin']; $slider_attrs['preload'] = $atts['preload']; $slider_attrs['auto_height'] = $atts['auto_height']; // Whether thumbail is enables or not $has_thumb = 'true' === $atts['thumbs']; $has_tab = !$has_thumb && 'tabs' === $atts['thumbs_type']; $has_slideinfo = 'true' === $atts['caption']; // Add thumbnail options id enabled if ($has_thumb) { $slider_attrs['thumbs'] = $atts['thumbs']; $slider_attrs['thumbs_type'] = $atts['thumbs_type']; $slider_attrs['thumbs_align'] = $atts['thumbs_align']; $slider_attrs['thumbs_width'] = $atts['thumbs_width']; $slider_attrs['thumbs_height'] = $atts['thumbs_height']; $slider_attrs['thumbs_space'] = $atts['thumbs_space']; $slider_attrs['thumbs_inset'] = $atts['thumbs_inset']; $slider_attrs['thumbs_autohide'] = $atts['thumbs_autohide']; $slider_attrs['thumbs_margin'] = $atts['thumbs_margin']; if ('bottom' == $slider_attrs['thumbs_align']) { $slider_attrs['slideinfo_margin'] = '80'; } } elseif ($has_tab) { $slider_attrs['thumbs_type'] = 'tabs'; } if ($has_slideinfo) { $slider_attrs['slideinfo'] = 'true'; $slider_attrs['slideinfo_inset'] = 'true'; $slider_attrs['slideinfo_height'] = '30'; } // get attachments if (!empty($atts['include'])) { $_attachments = get_posts(array('include' => $atts['include'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'])); $attachments = array(); foreach ($_attachments as $key => $val) { $attachments[$val->ID] = $_attachments[$key]; } } elseif (!empty($atts['exclude'])) { $attachments = get_children(array('post_parent' => $id, 'exclude' => $atts['exclude'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'])); } else { $attachments = get_children(array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'])); } // skip if no attachments found if (empty($attachments)) { return ''; } $slides_shortcode = ''; foreach ($attachments as $id => $attachment) { $attrs = ''; $img_src = msp_get_the_resized_attachment_src($id, 1400); $attrs .= sprintf('%s="%s" ', 'src', $img_src); $attrs .= sprintf('%s="%s" ', 'src_full', $img_src); if ('file' == $atts['link']) { $link = $img_src; } elseif ('none' == $atts['link']) { $link = ''; } else { $link = get_permalink($id); } if (!empty($link)) { $attrs .= sprintf('%s="%s" ', 'link', $link); } $info = ''; if (empty($attachment->post_excerpt)) { $attrs .= sprintf('%s="%s" ', 'alt', $attachment->post_excerpt); } else { $attrs .= sprintf('%s="%s" ', 'alt', $attachment->post_title); } if ($has_slideinfo) { $caption = $attachment->post_excerpt ? $attachment->post_excerpt : $attachment->post_title; $info = sprintf('[ms_slide_info]%s[/ms_slide_info]%s', $caption, "\n"); } $attrs .= sprintf('%s="%s" ', 'target', $atts['target']); $attrs .= sprintf('%s="%s" ', 'delay', $atts['delay']); if ($has_thumb) { $thumb = msp_get_the_resized_image_src($img_src, $atts['thumbs_width'], $atts['thumbs_height'], true); $thumb = msp_get_the_relative_media_url($thumb); $attrs .= sprintf('%s="%s" ', 'thumb', $thumb); } elseif ($has_tab) { $tab = '<div class="ms-thumb-alt">' . $attachment->post_title . '</div>'; $attrs .= sprintf('%s="%s" ', 'tab', $tab); } $slides_shortcode .= sprintf('[ms_slide %1$s]%3$s%2$s[/ms_slide]%3$s', $attrs, $info, "\n"); } /** * Filter slider default attributes. To find full list of slider options, take a look at "msp_masterslider_wrapper_shortcode" * function in /includes/msp-shortcodes.php file * * @var array List of slider options with values */ $slider_attrs = apply_filters('masterslider_gallery_slider_attrs', $slider_attrs); // Convert attrs to string $slides_shortcode_attrs = ''; foreach ($slider_attrs as $slider_attr => $slider_attr_value) { $slides_shortcode_attrs .= sprintf('%s="%s" ', $slider_attr, $slider_attr_value); } // Create slider shortcode $gallery_slider_shortcode = sprintf('[ms_slider %1$s]%2$s%3$s[/ms_slider]', $slides_shortcode_attrs, "\n", $slides_shortcode); return do_shortcode($gallery_slider_shortcode); }