Want more features on Pastebin? Sign Up, it's FREE!
Guest

Portfolio function

By: a guest on Jun 19th, 2012  |  syntax: PHP  |  size: 3.54 KB  |  views: 52  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #-----------------------------------------------------------------
  2. # Portfoliio page
  3. #-----------------------------------------------------------------
  4.  
  5. // Get the data and template for a portfolio page
  6. //................................................................
  7.  
  8. if ( ! function_exists( 'make_theme_portfolio_page' ) ) :
  9.        
  10.         function make_theme_portfolio_page($settings = false) {
  11.                 global $portfolio_query, $shortcode_values, $paged;
  12.                                
  13.                 $shortcode_values = $settings;
  14.                 $portfolio = array();
  15.                
  16.                 if ($settings && is_array($settings)) {
  17.  
  18.                         $portfolio = $settings;
  19.                                                
  20.                         // Unique ID. Used to identify multiple portfolios on one page.
  21.                         $id = base_convert(microtime(), 10, 36); // a random id generated for each form.
  22.                         $shortcode_values['id'] = $id;
  23.  
  24.                         // set some defaults in the shortcode values
  25.                         //................................................................
  26.  
  27.                         // columns
  28.                         if (!$shortcode_values['columns']) {
  29.                                 $shortcode_values['columns'] = 3; // default
  30.                         }
  31.                        
  32.                         // paging
  33.                         if (!$portfolio['paging']) {
  34.                                 $shortcode_values['paging'] = true; // default is to use paging
  35.                         } else {
  36.                                 $sc_val = strtolower(trim($portfolio['paging']));
  37.                                 if ($sc_val == 'no' || $sc_val == 'n' || $sc_val == '0' || $sc_val == 'false' || $sc_val == 'hide' || $sc_val == 'off' ) {
  38.                                         $shortcode_values['paging'] = false;
  39.                                 }
  40.                         }
  41.                        
  42.                         // posts per page
  43.                         if (!$portfolio['posts_per_page']) {
  44.                                 $portfolio['posts_per_page'] = floor((int) $shortcode_values['columns'] * 2);
  45.                         }
  46.                        
  47.  
  48.                         // check a few query values that need preperation
  49.                         //................................................................
  50.  
  51.                         // the categories to include (converted to array)
  52.                         if ($portfolio['category']) {
  53.                                 $cats = explode(',', $settings['category']);
  54.                                 foreach ((array) $cats as $cat) :
  55.                                         $portfolio['category__in'][] = trim($cat);
  56.                                 endforeach;
  57.                                 unset($portfolio['category']); // not a query variable so we remove it
  58.                         }
  59.                        
  60.                         // the post/page ID's to include (converted to array)
  61.                         if ($portfolio['page_id']) {
  62.                                 $page_id = explode(',', $settings['page_id']);
  63.                                 foreach ((array) $page_id as $id) :
  64.                                         $portfolio['post__in'][] = trim($id);
  65.                                 endforeach;
  66.                                 unset($portfolio['page_id']); // not a query variable so we remove it
  67.                         }
  68.  
  69.                         // set orderby to "menu_order" for pages, if not specified by user (otherwise it will use the published date)
  70.                         if ($portfolio['post_type'] == 'page' && !$portfolio['orderby'] ) {
  71.                                 $portfolio['orderby'] = 'menu_order';
  72.                                 if (!$portfolio['order']) $portfolio['order'] = 'ASC';
  73.                         }
  74.                        
  75.                         // not a query variables so we remove them
  76.                         unset($portfolio['columns']);
  77.                         unset($portfolio['excerpt']);
  78.                         unset($portfolio['excerpt_length']);
  79.                         unset($portfolio['title']);
  80.                         unset($portfolio['link']);
  81.                         unset($portfolio['image_ratio']);
  82.                         unset($portfolio['content_width']);
  83.                         unset($portfolio['paging']);
  84.  
  85.                        
  86.                        
  87.                         // for pagination to work...
  88.                         if ($shortcode_values['paging']) {
  89.                                 // if turned off we don't want this variable set or it will be populated by other shortcodes
  90.                                 $portfolio['paged'] = $paged;
  91.                         }
  92.                        
  93.                         // create query the portfolio (pass it to $wp_query)
  94.                         $portfolio_query = new WP_Query( $portfolio );
  95.                                
  96.                         // turn on output buffering to capture script output
  97.                         ob_start();
  98.                         get_template_part( 'template', 'portfolio' );
  99.                        
  100.                         // get the content that has been output
  101.                         $content = ob_get_clean();
  102.                         wp_reset_query();
  103.                        
  104.                         // return the content
  105.                         return $content;
  106.                 }
  107.                
  108.         }
  109.  
  110. endif;
clone this paste RAW Paste Data