ajayver

Untitled

Jul 24th, 2014
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 9.08 KB | None | 0 0
  1. add_action( 'after_setup_theme', 'child_theme_setup', 20 );
  2.  
  3. function child_theme_setup() {
  4.     remove_shortcode( 'portfolio' );
  5.     add_shortcode( 'portfolio', 'my_portfolio' );
  6. }
  7.  
  8. function my_portfolio($attributes, $content = null) {
  9.  
  10.     $portfolio_categories_args = array(
  11.         'orderby'           => 'name',
  12.         'order'             => 'DESC',
  13.         'hide_empty'        => true,
  14.         'exclude'           => array(),
  15.         'exclude_tree'      => array(),
  16.         'include'           => array(),
  17.         'number'            => '',
  18.         'fields'            => 'all',
  19.         'slug'              => '',
  20.         'parent'            => '',
  21.         'hierarchical'      => true,
  22.         'child_of'          => 0,
  23.         'get'               => '',
  24.         'name__like'        => '',
  25.         'description__like' => '',
  26.         'pad_counts'        => false,
  27.         'offset'            => '',
  28.         'search'            => '',
  29.         'cache_domain'      => 'core'
  30.     );
  31.  
  32.     $attributes = shortcode_atts(
  33.         array(
  34.             'style' => false,
  35.             'align' => false,
  36.             'items_bg_color' => false,
  37.             'items_text_color' => false,
  38.             'pagination' => false,
  39.             'filters' => false,
  40.             'columns' => 3,
  41.             'category' => null,
  42.             'items' => null,
  43.             'ratio' => '3:2',
  44.             'indents' => false,
  45.             'meta' => false,
  46.         ), $attributes);
  47.  
  48.     if ( ! in_array($attributes['columns'], array(2,3,4,5)))
  49.     {
  50.         $attributes['columns'] = 3;
  51.     }
  52.  
  53.     if ( ! in_array($attributes['ratio'], array('3:2','4:3','1:1', '2:3', '3:4',)))
  54.     {
  55.         $attributes['ratio'] = '3:2';
  56.     }
  57.  
  58.     if ( ! in_array($attributes['style'], array('type_1','type_2','type_3','type_4','type_5','type_6',)))
  59.     {
  60.         $attributes['style'] = 'type_1';
  61.     }
  62.  
  63.     if ( ! in_array($attributes['align'], array('left','right','center',)))
  64.     {
  65.         $attributes['align'] = 'center';
  66.     }
  67.  
  68.     $items_style = '';
  69.     if ($attributes['items_bg_color'] != '') {
  70.         $items_style .= 'background-color: '.$attributes['items_bg_color'].';';
  71.     }
  72.     if ($attributes['items_text_color'] != '') {
  73.         $items_style .= ' color: '.$attributes['items_text_color'].';';
  74.     }
  75.     if ($items_style != '') {
  76.         $items_style = ' style="'.$items_style.'"';
  77.     }
  78.  
  79.     $attributes['ratio'] = str_replace(':', '-', $attributes['ratio']);
  80.  
  81.     global $wp_query;
  82.  
  83.     $attributes['items'] = intval($attributes['items']);
  84.     $portfolio_items = (is_integer($attributes['items']) AND $attributes['items'] > 0)?$attributes['items']:$attributes['columns'];
  85.     if ($attributes['pagination'] == 1 OR $attributes['pagination'] == 'yes') {
  86.         if (is_front_page()) {
  87.             $page_string = 'page';
  88.         } else {
  89.             $page_string = 'paged';
  90.         }
  91.         $paged = get_query_var($page_string) ? get_query_var($page_string) : 1;
  92.     } else {
  93.         $paged = 1;
  94.     }
  95.     $args = array(
  96.         'post_type'         => 'us_portfolio',
  97.         'posts_per_page'    => $portfolio_items,
  98.         'post_status'       => 'publish',
  99.         'orderby'           => 'date',
  100.         'order'             => 'DESC',
  101.         'paged'             => $paged
  102.     );
  103.  
  104.     $filters_html = $sortable_class = '';
  105.     $categories_slugs = null;
  106.  
  107.     if ( ! empty($attributes['category'])) {
  108.  
  109.         $categories_slugs = explode(',', $attributes['category']);
  110.         $args['tax_query'] = array(
  111.             array(
  112.                 'taxonomy' => 'us_portfolio_category',
  113.                 'field' => 'slug',
  114.                 'terms' => $categories_slugs
  115.             )
  116.         );
  117.     }
  118.  
  119.     if ($attributes['filters'] == 1 OR $attributes['filters'] == 'yes') {
  120.         $categories = get_terms('us_portfolio_category', $portfolio_categories_args);
  121.  
  122.         if ( ! empty($categories_slugs))
  123.         {
  124.             foreach ($categories as $cat_id => $category)
  125.             {
  126.                 if ( ! in_array($category->slug, $categories_slugs)) {
  127.                     unset($categories[$cat_id]);
  128.                 }
  129.             }
  130.         }
  131.  
  132.         if (count($categories) > 1) {
  133.             $filters_html .= '<div class="w-filter">
  134.                            <div class="w-filter-list">
  135.                                ';
  136.             foreach($categories as $category) {
  137.                 $filters_html .= '<div class="w-filter-item">
  138.                                <a class="w-filter-link" href="javascript:void(0);" data-filter=".'.$category->slug.'">'.$category->name.'</a>
  139.                            </div>';
  140.             }
  141.            
  142.             $filters_html .=  '<div class="w-filter-item active">
  143.                                    <a class="w-filter-link" href="javascript:void(0);" data-filter="*">'.__('View all', 'us').'</a>
  144.                                </div>';  
  145.             $filters_html .= '</div>
  146.                    </div>';  
  147.         }
  148.     }
  149.  
  150.     if ($filters_html != '') {
  151.         $sortable_class = ' type_sortable';
  152.     }
  153.  
  154.     $temp = $wp_query; $wp_query= null;
  155.     $wp_query = new WP_Query($args);
  156.  
  157.     $portfolio_order_counter = 0;
  158.  
  159.     $indents_class = ($attributes['indents'] == 1 OR $attributes['indents'] == 'yes')?' with_indents':'';
  160.  
  161.     $output =   '<div class="w-portfolio '.$attributes['style'].' align_'.$attributes['align'].' columns_'.$attributes['columns'].' ratio_'.$attributes['ratio'].$sortable_class.$indents_class.'">'.$filters_html.
  162.                     '<div class="w-portfolio-list">';
  163.     while($wp_query->have_posts())
  164.     {
  165.         $wp_query->the_post();
  166.         $post = get_post();
  167.  
  168.         $link = 'javascript:void(0);';
  169.         $link_class = $link_target = '';
  170.         $link_tag = 'div';
  171.  
  172.         if (rwmb_meta('us_custom_link') != '')
  173.         {
  174.             $link = rwmb_meta('us_custom_link');
  175.             $link_class = ' external-link';
  176.             if (rwmb_meta('us_custom_link_blank') == 1)
  177.             {
  178.                 $link_target = ' target="_blank"';
  179.             }
  180.             $link_tag = 'a';
  181.         }
  182.  
  183.  
  184.         $additional_class = '';
  185.         if (rwmb_meta('us_additional_class') != '') {
  186.             $additional_class = ' '.rwmb_meta('us_additional_class');
  187.         }
  188.  
  189.         if (has_post_thumbnail()) {
  190.             $the_thumbnail = wp_get_attachment_image_src(get_post_thumbnail_id(), 'portfolio-list-'.$attributes['ratio']);
  191.             $the_thumbnail = $the_thumbnail[0];
  192.             $the_image = wp_get_attachment_image_src(get_post_thumbnail_id(), 'full');
  193.             $the_image = '<img src="'.$the_image[0].'" alt="">';
  194.         } else {
  195.             $the_thumbnail =  get_template_directory_uri() .'/img/placeholder/500x500.gif';
  196.             $the_image = '<img src="'.get_template_directory_uri().'/img/placeholder/1200x800.gif" alt="">';
  197.         }
  198.  
  199.         $item_categories_links = $item_categories_classes = '';
  200.         $item_categories = get_the_terms(get_the_ID(), 'us_portfolio_category');
  201.         if (is_array($item_categories))
  202.         {
  203.             $i = 0;
  204.             foreach ($item_categories as $item_category)
  205.             {
  206.                 $i++;
  207.                 $item_categories_links .= $item_category->name;
  208.                 if ($i < count($item_categories)) {
  209.                     $item_categories_links .= ' / ';
  210.                     $item_categories_classes .= ' '.$item_category->slug;
  211.                 }
  212.                 $item_categories_classes .= ' '.$item_category->slug;
  213.             }
  214.         }
  215.  
  216.         $meta_html = '';
  217.  
  218.         if ($attributes['meta'] == 'date') {
  219.             $meta_html = get_the_date();
  220.         } elseif ($attributes['meta'] == 'category') {
  221.             $meta_html = $item_categories_links;
  222.         }
  223.  
  224.         $output .=  '<div class="w-portfolio-item'.$additional_class.$item_categories_classes.'">
  225.                        <div class="w-portfolio-item-h">
  226.                            <'.$link_tag.' class="w-portfolio-item-anchor'.$link_class.'" href="'.$link.'" data-id="'.$post->ID.'"'.$link_target.$items_style.'>
  227.                                <div class="w-portfolio-item-image"><img src="'.$the_thumbnail.'" alt=""></div>
  228.                                <div class="w-portfolio-item-meta">
  229.                                    <div class="w-portfolio-item-meta-h">
  230.                                        <h2 class="w-portfolio-item-title">'.get_the_title().'</h2>
  231.                                        <span class="w-portfolio-item-text">'.$meta_html.'</span>
  232.                                    </div>
  233.                                </div>
  234.                            </'.$link_tag.'>
  235.                        </div>
  236.                    </div>';
  237.     }
  238.     $output .= '</div>';
  239.     if ($attributes['pagination'] == 1 OR $attributes['pagination'] == 'yes') {
  240.         if ($pagination = us_pagination()) {
  241.             $output .= '
  242.                <div class="g-pagination align_center">
  243.                    '.$pagination.'
  244.                </div>';
  245.         }
  246.     }
  247.     $output .= '</div>';
  248.     wp_reset_postdata();
  249.     $wp_query= $temp;
  250.  
  251.     return $output;
  252. }
Advertisement
Add Comment
Please, Sign In to add comment