<li class="cc-product-grid-item"> <div class="cc-product-grid-image-container"> <a href="<?php echo get_permalink(); ?> " title="<?php the_title(); ?> "><img src="<?php echo cc_primary_image_for_product($post->ID); ?> " class="cc-grid-item-image" alt="<?php echo $alt; ?> " /></a> </div> <p class="cc-product-grid-title"><?php the_title(); ?> </p> <?php $post = get_post(); if (!empty($post->post_excerpt)) { ?> <p class="cc-product-grid-excerpt"><?php echo $post->post_excerpt; ?> </p>
/** * Show the product catalog * * Params: * - category: Limit the list to a certain product category slug (default "all") * - max: The max number of products to list per page. (default 6) * - sort: How to sort the products * - price_asc * - price_desc * - name_asc * - name_desc * - menu */ public static function cc_product_catalog($args, $content) { // Look for limit $no_paging = false; $limit = null; if (isset($args['limit']) && is_numeric($args['limit']) && $args['limit'] >= 1) { $no_paging = true; $limit = $args['limit']; } // Look for page $page = get_query_var('paged') ? get_query_var('paged') : 1; if ($page == 1) { $page = get_query_var('page') ? get_query_var('page') : 1; } // Look for number of posts to show per page $per_page = isset($args['max']) ? (int) $args['max'] : 6; if ($per_page < 1) { $per_page = 6; } // Look for catalog title $title = null; if (isset($args['title'])) { $title = $args['title']; } $params = array('post_type' => 'cc_product', 'posts_per_page' => $per_page, 'post_status' => 'publish', 'paged' => $page, 'nopaging' => $no_paging); // Limit by category if (isset($args['category'])) { $category = strtolower($args['category']); if ('all' != $category) { $params['product-category'] = $category; } } // Order the posts $params['orderby'] = 'menu_order'; if (isset($args['sort'])) { switch ($args['sort']) { case 'price_asc': $params['orderby'] = array('meta_value_num' => 'ASC', 'menu_order' => 'ASC'); $params['meta_key'] = '_cc_product_price'; break; case 'price_desc': $params['orderby'] = array('meta_value_num' => 'DESC', 'menu_order' => 'ASC'); $params['meta_key'] = '_cc_product_price'; break; case 'name_asc': $params['orderby'] = 'title'; $params['order'] = 'ASC'; break; case 'name_desc': $params['orderby'] = 'title'; $params['order'] = 'DESC'; break; case 'menu': $params['orderby'] = 'menu_order'; break; } } // $products = get_posts( $params ); global $post; $wp_query = new WP_Query($params); $product_count = 0; $out = ''; if ($wp_query->have_posts()) { if (isset($title)) { $out .= '<h3 class="cc-catalog-title">' . $title . '</h3>'; } // Include title in output if provided $out .= '<ul class="cc-product-list">'; while ($wp_query->have_posts()) { $wp_query->the_post(); $src = cc_primary_image_for_product($post->ID); $out .= CC_View::get(CC_PATH . 'templates/partials/grid-item.php', array('post' => $post, 'thumbnail_src' => $src)); if (isset($limit)) { $product_count += 1; if ($product_count >= $limit) { break; } } } $out .= '</ul>'; // Include catalog pagination $out .= CC_View::get(CC_PATH . 'templates/partials/pagination.php', array('query' => $wp_query, 'page' => $page)); } return $out; }