Exemple #1
0
    function royal_portfolio_shortcode($atts)
    {
        $parameters = shortcode_atts(array('portfolio_display_from' => 'all', 'portfolio_display_order' => 'date', 'portfolio_custom_categories' => '', 'portfolio_custom_ids' => '', 'portfolio_display_filters' => '', 'portfolio_display_pagination' => '', 'portfolio_display_title' => '', 'portfolio_display_categories' => '', 'portfolio_display_date' => '', 'portfolio_display_description' => '', 'portfolio_display_likes' => '', 'portfolio_display_more_info' => '', 'portfolio_display_testimonial' => '', 'portfolio_layout_mode' => 'masonry', 'portfolio_posts_number' => '10', 'portfolio_columns_rate' => '0', 'portfolio_gutter_horz' => '20', 'portfolio_gutter_vert' => '20', 'portfolio_stretch_container' => '', 'portfolio_disable_paddings' => '', 'portfolio_disable_margins' => ''), $atts);
        extract($parameters);
        // get theme customizer data
        $pPage_general = get_option('royal_pPage_general');
        $pPost_media = get_option('royal_pPost_media');
        $pPost_title = get_option('royal_pPost_title');
        $pPost_cats = get_option('royal_pPost_cats');
        $pPost_meta = get_option('royal_pPost_meta');
        $pPost_desc = get_option('royal_pPost_desc');
        $pPost_likes = get_option('royal_pPost_likes');
        $pPost_more = get_option('royal_pPost_more');
        $pPost_test = get_option('royal_pPost_test');
        $sidebar = get_option('royal_sidebar');
        $filter_items = get_option('royal_filter_items');
        global $post;
        // define enable / disable
        $portfolio_display_title = $portfolio_display_title === 'yes' ? 'royal-grid-enable' : 'royal-grid-disable';
        $portfolio_display_categories = $portfolio_display_categories === 'yes' ? 'royal-grid-enable' : 'royal-grid-disable';
        $portfolio_display_date = $portfolio_display_date === 'yes' ? 'royal-grid-enable' : 'royal-grid-disable';
        $portfolio_display_description = $portfolio_display_description === 'yes' ? 'royal-grid-enable' : 'royal-grid-disable';
        $portfolio_display_likes = $portfolio_display_likes === 'yes' ? 'royal-grid-enable' : 'royal-grid-disable';
        $portfolio_display_more_info = $portfolio_display_more_info === 'yes' ? 'royal-grid-enable' : 'royal-grid-disable';
        $portfolio_display_testimonial = $portfolio_display_testimonial === 'yes' ? 'royal-grid-enable' : 'royal-grid-disable';
        ?>


		<!-- Portfolio Filters -->
		<?php 
        if ($portfolio_display_filters === 'yes' && $portfolio_display_from !== 'custom_ids') {
            ?>
		<ul class="filters body-section" data-sort="<?php 
            echo get_option('sorted_cat_slugs');
            ?>
">

			<?php 
            if ($filter_items['isotope'] === true) {
                ?>
			<li>
				<a class="rf-button active-filter-item active-state" data-filter="*">
					<i class="fa fa-<?php 
                echo $filter_items['icon'];
                ?>
"></i>
					<span><?php 
                echo $filter_items['portfolio_all_text'];
                ?>
</span>
					<i class="fa fa-<?php 
                echo $filter_items['icon'];
                ?>
"></i>
					<sup></sup>
				</a>
			<?php 
            }
            ?>
			
			<?php 
            // Portfolio Filters
            // portfolio categories
            $portfolio_cats = get_terms('royal_portfolio_cats');
            // show all portfolio item filters
            if ($portfolio_display_from === 'all') {
                // if category array is not empty
                if (count($portfolio_cats) > 0) {
                    foreach ($portfolio_cats as $cats => $cat) {
                        $cat_url = $filter_items['isotope'] === true ? '' : 'href="' . get_term_link($cat, 'royal_portfolio_cats') . '"';
                        echo '<li><a ' . $cat_url . ' class="rf-button" data-filter=".' . urldecode($cat->slug) . '"><i class="fa fa-' . $filter_items['icon'] . '"></i>' . $cat->name . '<i class="fa fa-' . $filter_items['icon'] . '"></i><sup></sup></a></li>';
                    }
                }
                // show portfolio item filters from custom categories
            } elseif ($portfolio_display_from === 'custom_categories') {
                // get custom categories
                $portfolio_cats = explode(',', $portfolio_custom_categories);
                foreach ($portfolio_cats as $key => $value) {
                    $current_cat_name = get_category_by_slug($value);
                    $cat_url = $filter_items['isotope'] === true ? '' : 'href="' . get_term_link($value, 'royal_portfolio_cats') . '"';
                    echo '<li><a ' . $cat_url . ' class="rf-button" data-filter=".' . urldecode($current_cat_name->slug) . '"><i class="fa fa-' . $filter_items['icon'] . '"></i>' . $current_cat_name->name . '<i class="fa fa-' . $filter_items['icon'] . '"></i><sup></sup></a></li>';
                }
            }
            // endif
            ?>

		</ul>
		<?php 
        }
        ?>


		<?php 
        if ($portfolio_display_from !== 'custom_ids') {
            if (get_query_var('paged')) {
                $paged = get_query_var('paged');
            } else {
                if (get_query_var('page')) {
                    $paged = get_query_var('page');
                } else {
                    $paged = 1;
                }
            }
            // portfolio categories
            $portfolio_cats = get_terms('royal_portfolio_cats');
            $portfolio_custom_categories = explode(',', $portfolio_custom_categories);
            $all_cats = '';
            if (!empty($portfolio_cats)) {
                foreach ($portfolio_cats as $key => $value) {
                    $all_cats[] = urldecode($value->slug);
                }
            }
            // categories which will be displayed
            $cats_2_show = $portfolio_display_from === 'all' ? $all_cats : $portfolio_custom_categories;
            if (empty($cats_2_show)) {
                $cats_2_show = '';
            }
            $tax_query_args = array('taxonomy' => 'royal_portfolio_cats', 'field' => 'slug', 'terms' => $cats_2_show);
            $portfolio = new WP_Query(array('post_type' => 'royal_portfolio', 'tax_query' => array($tax_query_args), 'posts_per_page' => $portfolio_posts_number, 'post__not_in' => array(get_the_ID()), 'paged' => $paged, 'orderby' => $portfolio_display_order));
        } else {
            $portfolio_custom_ids = explode(',', $portfolio_custom_ids);
            $portfolio = new WP_Query(array('post_type' => 'royal_portfolio', 'post__in' => $portfolio_custom_ids));
        }
        // Portfolio Posts Container Attributes
        $portfolio_container_atts = 'data-layout="' . $portfolio_layout_mode . '" ';
        $portfolio_container_atts .= 'data-columns-rate="' . $portfolio_columns_rate . '" ';
        $portfolio_container_atts .= 'data-gutter-horz="' . $portfolio_gutter_horz . '" ';
        $portfolio_container_atts .= 'data-gutter-vert="' . $portfolio_gutter_vert . '" ';
        $portfolio_container_atts .= 'data-aspect-width="' . $pPage_general['aspect_x'] . '" ';
        $portfolio_container_atts .= 'data-aspect-height="' . $pPage_general['aspect_y'] . '" ';
        // container class
        $portfolio_container_class = '';
        if ($portfolio_disable_paddings === 'yes') {
            $portfolio_container_class .= 'portfolio-container-no-padding ';
        }
        if ($portfolio_stretch_container === 'yes') {
            $portfolio_container_class .= 'stretch-container ';
        }
        if ($portfolio_disable_margins !== 'yes') {
            $portfolio_container_class .= 'body-section';
        }
        if ($portfolio->have_posts()) {
            echo '<section id="portfolio-container" class="' . $portfolio_container_class . '" ' . $portfolio_container_atts . ' >';
            // default post width for masonry-metro
            if ($pPage_general['layout'] === 'masonry-metro') {
                echo '<div class="portfolio-grid-sizer"></div>';
            }
            // portfolio page loop - displayes portfolio items
            while ($portfolio->have_posts()) {
                $portfolio->the_post();
                // get data from custom fields
                $rf_project_url = get_post_meta($post->ID, 'rf_project_url', true);
                $rf_testimonial_author = get_post_meta($post->ID, 'rf_testimonial_author', true);
                $rf_testimonial_content = get_post_meta($post->ID, 'rf_testimonial_content', true);
                $rf_metro_post_width = get_post_meta($post->ID, 'rf_metro_post_width', true);
                // Metro Layout Grid
                $metro_width_class = '';
                // custom post width for masonry-metro
                if ($pPage_general['layout'] === 'masonry-metro') {
                    $metro_width_class = 'post-width' . $rf_metro_post_width;
                }
                $custom_post_class = implode(' ', royal_cat_classes('portfolio')) . ' ' . $metro_width_class;
                ?>

		<!-- Begin Post -->
		<article <?php 
                post_class($custom_post_class);
                ?>
 id="post-<?php 
                the_ID();
                ?>
">

			<div class="portfolio-post-inner<?php 
                echo $pPage_general['grid_animated'] ? ' rf-grid-animated' : '';
                ?>
">

			<!-- Post Text Block - Above Media -->
			<div class="post-text-wrap">

				<?php 
                // Post Title
                if ($pPost_title['position'] === 'above') {
                    royal_post_title($portfolio_display_title);
                }
                // Post Categories & Filters
                if ($pPost_cats['position'] === 'above') {
                    royal_post_categories('portfolio', $pPost_cats['before_cats'], $pPost_cats['separator'], $portfolio_display_categories);
                }
                // Post Date & Author
                if ($pPost_meta['position'] === 'above') {
                    royal_post_date_and_author('portfolio', $pPost_meta['before_author'], $portfolio_display_date);
                }
                // Post Excerpt || Post Content
                if ($pPost_desc['position'] === 'above') {
                    royal_post_content($pPost_desc['display_as'], $pPost_desc['excerpt_length'], $portfolio_display_description);
                }
                // Likes, Sharing & Comments
                if ($pPost_likes['position'] === 'above') {
                    royal_post_likes_comments_sharing(array('likes_icon' => $pPost_likes['likes_icon'], 'comments_icon' => $pPost_likes['comments_icon'], 'separator' => $pPost_likes['icon_separator'], 'sharing_open' => $pPost_likes['open_on']), $portfolio_display_likes);
                }
                // Read More & Project Link
                if ($pPost_more['position'] === 'above') {
                    royal_post_more_info(array('type' => 'portfolio', 'info_type' => $pPost_more['info_type'], 'link' => $rf_project_url, 'link_text' => $pPost_more['project_text'], 'more_text' => $pPost_more['text'], 'more_icon' => $pPost_more['icon']), $portfolio_display_more_info);
                }
                // Client Testimonial
                if ($pPost_test['position'] === 'above') {
                    royal_portfolio_testimonial($rf_testimonial_author, $rf_testimonial_content, $portfolio_display_testimonial);
                }
                ?>

			</div><!-- End .post-text-wrap -->


			<!-- Post Media Block -->
			<div class="post-media-wrap">
				
				<div class="post-media-in-wrap">

					<!-- Post Media -->
					<div class="post-media">

						<!-- Decorational Triangle -->
						<div class="triangle-wrap"></div>

						<!-- include post format media content -->
						<?php 
                get_template_part('post-formats/content', get_post_format());
                ?>

					</div><!-- end .post-media -->

					<?php 
                // get portfolio item info hovers
                if ($pPost_media['info_hovers_select'] === 'fade') {
                    $info_hover = $pPost_media['hover_fade'];
                } elseif ($pPost_media['info_hovers_select'] === 'grow') {
                    $info_hover = $pPost_media['hover_grow'];
                } elseif ($pPost_media['info_hovers_select'] === 'slide') {
                    $info_hover = $pPost_media['hover_slide'];
                } elseif ($pPost_media['info_hovers_select'] === 'skew') {
                    $info_hover = $pPost_media['hover_skew'];
                } elseif ($pPost_media['info_hovers_select'] === 'sk-full') {
                    $info_hover = $pPost_media['hover_skew_full'];
                } elseif ($pPost_media['info_hovers_select'] === 'skfull-fd') {
                    $info_hover = $pPost_media['hover_skew_full_fade'];
                } else {
                    $info_hover = array('fade', 'center-grow', 'center-grow-full', 'top-left-grow', 'top-right-grow', 'bottom-left-grow', 'bottom-right-grow', 'top-slide', 'bottom-slide', 'left-slide', 'right-slide', 'skew-top', 'skew-bottom', 'skew-left', 'skew-right', 'skew-full-top', 'skew-full-bottom', 'skew-full-left', 'skew-full-right', 'skew-full-fade-top', 'skew-full-fade-bottom', 'skew-full-fade-left', 'skew-full-fade-right');
                    $info_hover_number = array_rand($info_hover, 1);
                    $info_hover = $info_hover[$info_hover_number];
                }
                ?>

					<!-- Post Info Hovers -->
					<div class="media-hovers media-hover-<?php 
                echo $info_hover;
                ?>
">

						<div class="media-hovers-outer">
							<div class="media-hovers-inner">

							<?php 
                // Post Title
                if ($pPost_title['position'] === 'hover') {
                    royal_post_title($portfolio_display_title);
                }
                // Post Categories & Filters
                if ($pPost_cats['position'] === 'hover') {
                    royal_post_categories('portfolio', $pPost_cats['before_cats'], $pPost_cats['separator'], $portfolio_display_categories);
                }
                // Post Date & Author
                if ($pPost_meta['position'] === 'hover') {
                    royal_post_date_and_author('portfolio', $pPost_meta['before_author'], $portfolio_display_date);
                }
                // Post Excerpt || Post Content
                if ($pPost_desc['position'] === 'hover') {
                    royal_post_content($pPost_desc['display_as'], $pPost_desc['excerpt_length'], $portfolio_display_description);
                }
                // Likes, Sharing & Comments
                if ($pPost_likes['position'] === 'hover') {
                    royal_post_likes_comments_sharing(array('likes_icon' => $pPost_likes['likes_icon'], 'comments_icon' => $pPost_likes['comments_icon'], 'separator' => $pPost_likes['icon_separator'], 'sharing_open' => $pPost_likes['open_on']), $portfolio_display_likes);
                }
                // Read More & Project Link
                if ($pPost_more['position'] === 'hover') {
                    royal_post_more_info(array('type' => 'portfolio', 'info_type' => $pPost_more['info_type'], 'link' => $rf_project_url, 'link_text' => $pPost_more['project_text'], 'more_text' => $pPost_more['text'], 'more_icon' => $pPost_more['icon']), $portfolio_display_more_info);
                }
                // Client Testimonial
                if ($pPost_test['position'] === 'hover') {
                    royal_portfolio_testimonial($rf_testimonial_author, $rf_testimonial_content, $portfolio_display_testimonial);
                }
                // Media Hover Link
                $lightbox_img_src = wp_get_attachment_url(get_post_thumbnail_id());
                if (get_post_format() === 'video') {
                    // get data from custom fields
                    $rf_video_type = get_post_meta($post->ID, 'rf_video_type', true);
                    $rf_video_embed = get_post_meta($post->ID, 'rf_video_embed', true);
                    $rf_video_lightbox = '';
                    if ($rf_video_type === 'embed') {
                        if (strpos($rf_video_embed, 'www.youtube.com')) {
                            $rf_video_embed = substr($rf_video_embed, strpos($rf_video_embed, 'embed/') + 6, strlen($rf_video_embed));
                            $rf_video_embed = substr($rf_video_embed, 0, strpos($rf_video_embed, '"'));
                            $rf_video_lightbox = 'https://youtu.be/' . $rf_video_embed;
                        } elseif (strpos($rf_video_embed, 'player.vimeo.com')) {
                            $rf_video_embed = substr($rf_video_embed, strpos($rf_video_embed, 'video/') + 6, strlen($rf_video_embed));
                            $rf_video_embed = substr($rf_video_embed, 0, strpos($rf_video_embed, '"'));
                            $rf_video_lightbox = 'http://vimeo.com/' . $rf_video_embed;
                        }
                    } else {
                        $full_size_img = wp_get_attachment_image_src(get_post_thumbnail_id(), 'full');
                        $rf_video_lightbox = $full_size_img[0];
                    }
                    $lightbox_img_src = $rf_video_lightbox;
                } elseif (get_post_format() === 'audio') {
                    // get data from custom fields
                    $rf_audio_type = get_post_meta($post->ID, 'rf_audio_type', true);
                    $rf_audio_embed = get_post_meta($post->ID, 'rf_audio_embed', true);
                    if ($rf_audio_type === 'embed') {
                        $src_length = strpos($rf_audio_embed, 'visual=true"') - strpos($rf_audio_embed, 'src="') + 6;
                        $src_position = strpos($rf_audio_embed, 'src="') + 5;
                        $rf_audio_embed = substr($rf_audio_embed, $src_position, $src_length);
                    }
                    $lightbox_img_src = $rf_audio_embed;
                }
                // get image ALT text
                $attachment = get_post(get_post_thumbnail_id());
                $attachment_title = '';
                if ($attachment !== null) {
                    $attachment_title = esc_attr($attachment->post_title);
                }
                if ($pPost_media['hover_link'] === 'permalink') {
                    echo '<a href="' . get_the_permalink() . '" class="media-hover-link"></a>';
                } elseif ($pPost_media['hover_link'] === 'lightbox') {
                    echo '<a href="' . esc_url($lightbox_img_src) . '" rel="prettyPhoto[portfolio]" class="media-hover-link" data-title="' . $attachment_title . '"></a>';
                }
                ?>
							
							</div>
						</div>

					</div><!-- end .media-hovers -->
			
				</div><!-- end .post-media-in-wrap -->

			</div><!-- end .post-media-wrap -->


			<!-- Post Text wrap - Below Media -->
			<div class="post-text-wrap">

				<?php 
                // Post Title
                if ($pPost_title['position'] === 'below') {
                    royal_post_title($portfolio_display_title);
                }
                // Post Categories & Filters
                if ($pPost_cats['position'] === 'below') {
                    royal_post_categories('portfolio', $pPost_cats['before_cats'], $pPost_cats['separator'], $portfolio_display_categories);
                }
                // Post Date & Author
                if ($pPost_meta['position'] === 'below') {
                    royal_post_date_and_author('portfolio', $pPost_meta['before_author'], $portfolio_display_date);
                }
                // Post Excerpt || Post Content
                if ($pPost_desc['position'] === 'below') {
                    royal_post_content($pPost_desc['display_as'], $pPost_desc['excerpt_length'], $portfolio_display_description);
                }
                // Likes, Sharing & Comments
                if ($pPost_likes['position'] === 'below') {
                    royal_post_likes_comments_sharing(array('likes_icon' => $pPost_likes['likes_icon'], 'comments_icon' => $pPost_likes['comments_icon'], 'separator' => $pPost_likes['icon_separator'], 'sharing_open' => $pPost_likes['open_on']), $portfolio_display_likes);
                }
                // Read More & Project Link
                if ($pPost_more['position'] === 'below') {
                    royal_post_more_info(array('type' => 'portfolio', 'info_type' => $pPost_more['info_type'], 'link' => $rf_project_url, 'link_text' => $pPost_more['project_text'], 'more_text' => $pPost_more['text'], 'more_icon' => $pPost_more['icon']), $portfolio_display_more_info);
                }
                // Client Testimonial
                if ($pPost_test['position'] === 'below') {
                    royal_portfolio_testimonial($rf_testimonial_author, $rf_testimonial_content, $portfolio_display_testimonial);
                }
                ?>

			</div><!-- end .post-text-wrap -->

			</div><!-- end .portfolio-post-inner -->

		</article><!-- End Post -->

		<?php 
            }
            ?>


		</section><!-- End #portfolio-container -->


		<?php 
            // restore original post data
            wp_reset_postdata();
            // posts pagination
            if ($portfolio_display_pagination === 'yes' && $portfolio_display_from !== 'custom_ids') {
                royal_pagination($portfolio->max_num_pages, 'infinite');
            }
            ?>


		<!-- if have no posts -->
		<?php 
        } else {
            ?>
			<div class="inner-content">
				<h3><?php 
            _e('No Portfolio Items found!', 'hyperx');
            ?>
</h3>
			</div>
		<?php 
        }
        ?>

	    <?php 
    }
        }
        // Post Excerpt || Post Content
        if ($pPost_desc['position'] === 'below') {
            royal_post_content($pPost_desc['display_as'], $pPost_desc['excerpt_length']);
        }
        // Likes, Sharing & Comments
        if ($pPost_likes['position'] === 'below') {
            royal_post_likes_comments_sharing(array('likes_icon' => $pPost_likes['likes_icon'], 'comments_icon' => $pPost_likes['comments_icon'], 'separator' => $pPost_likes['icon_separator'], 'sharing_open' => $pPost_likes['open_on']));
        }
        // Read More & Project Link
        if ($pPost_more['position'] === 'below') {
            royal_post_more_info(array('type' => 'portfolio', 'info_type' => $pPost_more['info_type'], 'link' => $rf_project_url, 'link_text' => $pPost_more['project_text'], 'more_text' => $pPost_more['text'], 'more_icon' => $pPost_more['icon']));
        }
        // Client Testimonial
        if ($pPost_test['position'] === 'below') {
            royal_portfolio_testimonial($rf_testimonial_author, $rf_testimonial_content);
        }
        ?>

	</div><!-- end .post-text-wrap -->

	</div><!-- end .portfolio-post-inner -->

</article><!-- End Post -->

<?php 
    }
    ?>


</section><!-- End #portfolio-container -->