示例#1
0
function ts_spotify_shortcode($atts = null)
{
    $atts = shortcode_atts(array('url' => ''), $atts);
    $audio_url = function_exists('ts_get_audio_embed_url') ? ts_get_audio_embed_url($atts['url']) : '';
    return $audio_url ? '<div class="ts-audio-shortcode-wrap ts-shortcode-block"><div class="ts-audio-shortcode fluid-width-audio-wrapper"><iframe class="ts-spotify-embed" src="' . esc_url($audio_url) . '" width="100%" height="80" frameborder="0"></iframe></div></div>' : '';
}
示例#2
0
function ts_get_featured_media($arg = array())
{
    global $post, $smof_data, $ts_show_sidebar, $ts_page_id, $ts_within_blog_loop;
    $defaults = array('allow_audio' => false, 'allow_videos' => true, 'allow_galleries' => true);
    $arg = wp_parse_args($arg, $defaults);
    $html = '';
    $ready = false;
    $within_slider = isset($arg['within_slider']) && ts_attr_is_true($arg['within_slider']) ? true : false;
    $is_single_featured_media = isset($arg['is_single']) && $arg['is_single'] === true && $post->ID == $ts_page_id ? true : false;
    $posttype = get_post_type($post->ID);
    $post_meta_prefix = $posttype == 'portfolio' ? '_portfolio_' : '_p_';
    if ($posttype == 'portfolio') {
        $crop_images = ts_option_vs_default('crop_images_on_portfolio', 1) ? true : false;
    } else {
        $crop_images = ts_option_vs_default('crop_images_on_blog', 1) ? true : false;
    }
    $get_alt_text_in_loop = ts_option_vs_default('featured_image_alt_text_within_loop', 0) ? true : false;
    $get_alt_text = $is_single_featured_media || $get_alt_text_in_loop ? true : false;
    $video_id = $return_link = '';
    if ($ts_show_sidebar == 'yes') {
        if ($crop_images) {
            $crop_width = 740;
            $crop_height = 480;
        } else {
            $crop_width = 740;
            $crop_height = 0;
        }
    } else {
        if ($crop_images) {
            $crop_width = 1100;
            $crop_height = 540;
        } else {
            $crop_width = 1100;
            $crop_height = 0;
        }
    }
    if (isset($arg['media_height']) && $arg['media_height'] !== false && isset($arg['media_width']) && $arg['media_width'] !== false) {
        $crop_width = $arg['media_width'];
        $crop_height = $arg['media_height'];
    }
    $seek_thumb_size_name = $crop_width > 1024 ? 'full' : 'large';
    //ts_figure_thumb_name($crop_width, $crop_height);
    $allow_audio = isset($arg['allow_audio']) && ts_attr_is_true($arg['allow_audio']) ? true : false;
    $allow_videos = isset($arg['allow_videos']) && ts_attr_is_false($arg['allow_videos']) ? false : true;
    $allow_self_hosted_video = isset($arg['allow_self_hosted_video']) && ts_attr_is_true($arg['allow_self_hosted_video']) ? true : false;
    $allow_video_embed_code = isset($arg['allow_video_embed_code']) && ts_attr_is_false($arg['allow_video_embed_code']) ? false : true;
    $allow_galleries = isset($arg['allow_galleries']) && ts_attr_is_false($arg['allow_galleries']) ? false : true;
    if (isset($arg['video_height']) && isset($arg['video_width'])) {
        $video_width = 'width="' . esc_attr($arg['video_width']) . '"';
        $video_height = 'height="' . esc_attr($arg['video_height']) . '"';
    } else {
        $video_width = '';
        $video_height = '';
    }
    $audio_class = isset($arg['audio_class']) ? $arg['audio_class'] : '';
    $media_class = isset($arg['media_class']) ? $arg['media_class'] : '';
    $show_caption = isset($arg['show_caption']) && $arg['show_caption'] === true ? true : false;
    $post_format = $posttype == 'portfolio' ? get_post_meta($post->ID, $post_meta_prefix . 'project_type', true) : get_post_format();
    if ($allow_videos && in_array($post_format, array('video', 'youtube', 'vimeo', 'self_hosted_video'))) {
        $vine = '';
        // not used for now
        $vimeo = get_post_meta($post->ID, $post_meta_prefix . 'vimeo_id', true);
        $youtube = get_post_meta($post->ID, $post_meta_prefix . 'youtube_id', true);
        $self_hosted = get_post_meta($post->ID, $post_meta_prefix . 'self_hosted_video', true);
        $embed_code = get_post_meta($post->ID, $post_meta_prefix . 'video_embed_code', true);
        $post_format = $vimeo || $youtube || $self_hosted || $embed_code ? 'video' : 'standard';
        if ($self_hosted && !$allow_self_hosted_video) {
            $post_format = 'standard';
        }
        if ($embed_code && !$allow_video_embed_code) {
            $post_format = 'standard';
        }
    } elseif ($allow_galleries && in_array($post_format, array('gallery', 'slider'))) {
        $post_format = 'gallery';
    } elseif ($allow_audio && in_array($post_format, array('audio', 'soundcloud', 'spotify', 'self_hosted_audio'))) {
        $soundcloud = get_post_meta($post->ID, $post_meta_prefix . 'soundcloud_id', true);
        $spotify = get_post_meta($post->ID, $post_meta_prefix . 'spotify_id', true);
        $self_hosted_audio = get_post_meta($post->ID, $post_meta_prefix . 'self_hosted_audio', true);
        $post_format = $soundcloud || $spotify || $self_hosted_audio ? 'audio' : 'standard';
    } else {
        $post_format = 'standard';
    }
    $preview = get_post_meta($post->ID, $post_meta_prefix . 'preview_image', true);
    $preview_id = get_post_meta($post->ID, $post_meta_prefix . 'preview_image_id', true);
    $post_format = $preview && trim($preview) && $ts_page_id != $post->ID ? 'standard' : $post_format;
    $class = isset($arg['class']) ? $arg['class'] : '';
    $color = str_replace('#', '', ts_option_vs_default('primary_color', ''));
    if ($post_format == 'video') {
        $html .= $class ? '<div class="' . esc_attr($class) . '">' : '';
        if ($vimeo) {
            $qs_addons = ts_get_video_qs_addons($vimeo, '&amp;');
            $video_id = ts_get_video_id($vimeo);
            $return_link = 'https://vimeo.com/' . $video_id;
            $iframe_id = 'vimeo-' . $video_id . '-' . mt_rand();
            $src_append = $within_slider ? '&amp;api=1&amp;player_id=' . $iframe_id : '';
            $html .= '<div class="fluid-width-video-wrapper ' . esc_attr($media_class) . '"><div>
                <iframe id="' . esc_attr($iframe_id) . '" src="' . esc_url('https://player.vimeo.com/video/' . $video_id . '?title=0&amp;byline=0&amp;portrait=0&amp;color=' . $color . $src_append . $qs_addons) . '" class="ts-vimeo-player" frameborder="0" webkitAllowFullScreen allowFullScreen ' . $video_width . ' ' . $video_height . '></iframe>
            </div></div>';
        } elseif ($self_hosted) {
            $html .= '<div class="fluid-width-video-wrapperx ' . esc_attr($media_class) . '">
                ' . do_shortcode('[video src="' . esc_url($self_hosted) . '"]') . '
            </div>';
        } elseif ($vine) {
            $video_id = ts_get_video_id($vine);
            $return_link = 'https://vine.com/v/' . $video_id;
            $html .= '<div class="featured-photo"><p class="fluid-width-video-wrapper ' . esc_attr($media_class) . '">
                <iframe class="vine-embed" src="' . esc_url('https://vine.co/v/' . ts_get_video_id($vine) . '/embed/simple') . '" width="600" height="600" frameborder="0"></iframe><script async src="https://platform.vine.co/static/scripts/embed.js" charset="utf-8"></script>
            </p></div>';
        } elseif ($embed_code) {
            $video_id = 'ts-embed-' . mt_rand();
            $return_link = '';
            $html = '<div class="fluid-width-video-wrapper ' . esc_attr($media_class) . '">' . $embed_code . '</div>';
        } elseif ($youtube) {
            $qs_addons = ts_get_video_qs_addons($youtube, '&amp;');
            $video_id = ts_get_video_id($youtube);
            $return_link = 'https://www.youtube.com/watch?v=' . $video_id;
            $iframe_id = 'youtube-' . $video_id . '-' . mt_rand();
            $src_append = $within_slider ? '&amp;enablejsapi=1' : '';
            $html .= '<div class="fluid-width-video-wrapper ' . esc_attr($media_class) . '">
                <iframe id="' . esc_attr($iframe_id) . '" src="' . esc_url('https://www.youtube.com/embed/' . $video_id . '?rel=0' . $src_append . $qs_addons) . '" frameborder="0" class="ts-youtube-player" allowfullscreen ' . $video_width . ' ' . $video_height . '></iframe>
            </div>';
        }
        $html .= $class ? '</div>' : '';
        $ready = true;
    }
    if ($post_format == 'audio') {
        $html .= $class ? '<div class="featured-audio ' . esc_attr($class) . '">' : '';
        if ($soundcloud) {
            $audio_url = ts_get_audio_embed_url($soundcloud);
            $return_link = $audio_url;
            $html .= '<div class="' . esc_attr($audio_class) . ' ' . esc_attr($media_class) . '">' . do_shortcode('[soundcloud url="' . esc_url($soundcloud) . '"]') . '</div>';
        } elseif ($spotify) {
            $audio_url = ts_get_audio_embed_url($spotify);
            $return_link = $audio_url;
            $html .= '<div class="' . esc_attr($audio_class) . ' ' . esc_attr($media_class) . '">' . do_shortcode('[spotify url="' . esc_url($spotify) . '"]') . '</div>';
        } elseif ($self_hosted_audio) {
            $return_link = $audio_url = $self_hosted_audio;
            $html .= '<div class="' . esc_attr($audio_class) . ' ' . esc_attr($media_class) . '">' . do_shortcode('[audio src="' . esc_url($self_hosted_audio) . '"]') . '</div>';
        }
        $html .= $class ? '</div>' : '';
        $post_format = $audio_url ? 'audio' : 'standard';
        $ready = $audio_url ? true : false;
    }
    if ($post_format == 'gallery') {
        $crop_width = isset($arg['gallery_width']) ? $arg['gallery_width'] : $crop_width;
        $crop_height = isset($arg['gallery_height']) ? $arg['gallery_height'] : $crop_height;
        $gallery_type = isset($arg['gallery_type']) && $post->ID == $ts_page_id ? $arg['gallery_type'] : 'slider';
        $photo1_id = get_post_meta($post->ID, $post_meta_prefix . 'image_1_id', true);
        $photo2_id = get_post_meta($post->ID, $post_meta_prefix . 'image_2_id', true);
        $photo3_id = get_post_meta($post->ID, $post_meta_prefix . 'image_3_id', true);
        $photo4_id = get_post_meta($post->ID, $post_meta_prefix . 'image_4_id', true);
        $photo5_id = get_post_meta($post->ID, $post_meta_prefix . 'image_5_id', true);
        $photo6_id = get_post_meta($post->ID, $post_meta_prefix . 'image_6_id', true);
        $photo7_id = get_post_meta($post->ID, $post_meta_prefix . 'image_7_id', true);
        $photo8_id = get_post_meta($post->ID, $post_meta_prefix . 'image_8_id', true);
        $photo9_id = get_post_meta($post->ID, $post_meta_prefix . 'image_9_id', true);
        $photo10_id = get_post_meta($post->ID, $post_meta_prefix . 'image_10_id', true);
        $photo1 = wp_get_attachment_image_src($photo1_id, $seek_thumb_size_name);
        $photo2 = wp_get_attachment_image_src($photo2_id, $seek_thumb_size_name);
        $photo3 = wp_get_attachment_image_src($photo3_id, $seek_thumb_size_name);
        $photo4 = wp_get_attachment_image_src($photo4_id, $seek_thumb_size_name);
        $photo5 = wp_get_attachment_image_src($photo5_id, $seek_thumb_size_name);
        $photo6 = wp_get_attachment_image_src($photo6_id, $seek_thumb_size_name);
        $photo7 = wp_get_attachment_image_src($photo7_id, $seek_thumb_size_name);
        $photo8 = wp_get_attachment_image_src($photo8_id, $seek_thumb_size_name);
        $photo9 = wp_get_attachment_image_src($photo9_id, $seek_thumb_size_name);
        $photo10 = wp_get_attachment_image_src($photo10_id, $seek_thumb_size_name);
        $photo1 = isset($photo1[0]) ? aq_resize($photo1[0], $crop_width, $crop_height, true, true, true, $photo1_id) : '';
        $photo2 = isset($photo2[0]) ? aq_resize($photo2[0], $crop_width, $crop_height, true, true, true, $photo2_id) : '';
        $photo3 = isset($photo3[0]) ? aq_resize($photo3[0], $crop_width, $crop_height, true, true, true, $photo3_id) : '';
        $photo4 = isset($photo4[0]) ? aq_resize($photo4[0], $crop_width, $crop_height, true, true, true, $photo4_id) : '';
        $photo5 = isset($photo5[0]) ? aq_resize($photo5[0], $crop_width, $crop_height, true, true, true, $photo5_id) : '';
        $photo6 = isset($photo6[0]) ? aq_resize($photo6[0], $crop_width, $crop_height, true, true, true, $photo6_id) : '';
        $photo7 = isset($photo7[0]) ? aq_resize($photo7[0], $crop_width, $crop_height, true, true, true, $photo7_id) : '';
        $photo8 = isset($photo8[0]) ? aq_resize($photo8[0], $crop_width, $crop_height, true, true, true, $photo8_id) : '';
        $photo9 = isset($photo9[0]) ? aq_resize($photo9[0], $crop_width, $crop_height, true, true, true, $photo9_id) : '';
        $photo10 = isset($photo10[0]) ? aq_resize($photo10[0], $crop_width, $crop_height, true, true, true, $photo10_id) : '';
        $all_photos = array('id_' . $photo1_id => $photo1, 'id_' . $photo2_id => $photo2, 'id_' . $photo3_id => $photo3, 'id_' . $photo4_id => $photo4, 'id_' . $photo5_id => $photo5, 'id_' . $photo6_id => $photo6, 'id_' . $photo7_id => $photo7, 'id_' . $photo8_id => $photo8, 'id_' . $photo9_id => $photo9, 'id_' . $photo10_id => $photo10);
        $all_photos = array_filter($all_photos);
        $return_link = current($all_photos);
        if (count($all_photos) > 0) {
            if ($gallery_type == 'masonry' || $gallery_type == 'grid') {
                $html .= '<div class="ts-portfolio-masonry-gallery">';
                $link_begin = '<a href="' . esc_url(get_permalink()) . '" class="featured-photo-link">';
                $link_end = '</a>';
                if ($post->ID == $ts_page_id) {
                    $link_begin = '';
                    $link_end = '';
                }
                $i = 1;
                foreach ($all_photos as $img_id => $img) {
                    $alt = $get_alt_text ? ts_get_attachment_alt_text($img_id) : '';
                    $html .= '<div class="item">' . $link_begin . '<img src="' . esc_url($img) . '" alt="' . esc_attr($alt) . '"/>' . $link_end . '</div>';
                    $i++;
                }
                $html .= $class ? '</div>' : '';
            } elseif ($gallery_type == 'images') {
                $i = 1;
                foreach ($all_photos as $img_id => $img) {
                    $alt = $get_alt_text ? ts_get_attachment_alt_text($img_id) : '';
                    $html .= '<div class="single-image"><img src="' . esc_url($img) . '" alt="' . esc_attr($alt) . '"/></div>';
                    $i++;
                }
            } else {
                $html .= $class ? '<div class="' . esc_attr($class) . ' ' . esc_attr($media_class) . '">' : '';
                $html .= '<div class="flexslider gallery slider"><ul class="slides">';
                $link_begin = '<a href="' . esc_url(get_permalink()) . '" class="featured-photo-link">';
                $link_end = '</a>';
                if ($post->ID == $ts_page_id) {
                    $link_begin = '';
                    $link_end = '';
                }
                $i = 1;
                foreach ($all_photos as $img_id => $img) {
                    $alt = $get_alt_text ? ts_get_attachment_alt_text($img_id) : '';
                    $html .= '<li>' . $link_begin . '<img src="' . esc_url($img) . '" alt="' . esc_attr($alt) . '"/>' . $link_end . '</li>';
                    $i++;
                }
                $html .= '</ul></div>';
                $html .= $class ? '</div>' : '';
            }
        } else {
            $post_format = 'standard';
        }
    }
    if (!in_array($post_format, array('video', 'gallery', 'slider', 'audio')) || in_array($post_format, array('video', 'gallery', 'slider', 'audio')) && !$html) {
        $post_format = 'standard';
        $photo_id = '';
        $thumb_photo_id = get_post_thumbnail_id($post->ID);
        $thumb_photo = wp_get_attachment_image_src($thumb_photo_id, $seek_thumb_size_name);
        $thumb_photo = isset($thumb_photo[0]) ? $thumb_photo[0] : '';
        if (trim($preview) && !$is_single_featured_media || $preview && !$thumb_photo) {
            $photo_id = $preview_id;
            $photo = $return_link = $preview;
        } else {
            $photo_id = $thumb_photo_id;
            $photo = $return_link = $thumb_photo;
        }
        if ($photo) {
            $caption = '';
            $link_class = $within_slider ? 'ts-item-link' : 'featured-photo-link';
            $link_begin = '<a href="' . esc_url(get_permalink()) . '" class="' . esc_attr($link_class) . '">';
            $link_end = '</a>';
            if ($post->ID == $ts_page_id && $show_caption && $ts_within_blog_loop === false) {
                $link_begin = '';
                $link_end = '';
                $caption = ts_get_photo_caption($photo_id);
            }
            $photo = aq_resize($photo, $crop_width, $crop_height, true, true, true, $photo_id);
            $photo_class = $within_slider ? 'slider-photo' : 'featured-photo';
            $alt = $get_alt_text ? ts_get_attachment_alt_text($photo_id) : '';
            $media = '<div class="' . esc_attr($photo_class) . ' ' . esc_attr($media_class) . ' ' . esc_attr($ts_within_blog_loop) . '">' . $link_begin . '<img src="' . esc_url($photo) . '" alt="' . esc_attr($alt) . '" width="' . esc_attr($crop_width) . '"/>' . $link_end . $caption . '</div>';
            $html .= $class ? '<div class="' . esc_attr($class) . '">' . $media . '</div>' . "\n" : $media . "\n";
        }
    }
    $wrap_class = array();
    $wrap_class[] = $within_slider ? '' : 'ts-fade-in';
    $wrap_class[] = isset($arg['wrap_class']) ? $arg['wrap_class'] : '';
    $wrap_class[] = 'ts-featured-media-' . $post_format;
    $wrap_class = implode(' ', $wrap_class);
    $final_html = '<div class="featured-media-wrap ' . esc_attr($wrap_class) . '">' . $html . '</div>';
    if (isset($arg['return']) && $arg['return'] == 'link') {
        return $return_link;
    } elseif (isset($arg['return']) && $arg['return'] == 'array') {
        $mfp_class = $post_format == 'video' && $video_id ? 'mfp-iframe' : (isset($return_link) ? 'mfp-image' : '');
        return array('link' => $return_link, 'mfp_class' => $mfp_class);
    } elseif (isset($arg['return']) && $arg['return'] == 'big_array') {
        $return_array = array('html' => $final_html, 'format' => $post_format);
        return $return_array;
    } else {
        return trim($html) ? $final_html : '';
    }
}