Tsybulsky Serg
Tsybulsky Serg

Reputation: 149

wp e-commerce group product by category

Sorry for my bad english. I have WP 3.3.1 & wp-e-commerce.3.8.7.6.2. On the products page (which use wpsc-products_page.php template) I have list of products. I want to group this products by category. For example:

**Cat1
Product 1
Product 2

** Cat2
Product 1
Product 2

** Cat3
Product 1
Product 2

I try to use this method, but it`s does not work

add_filter('posts_join', create_function('$a', 'global $wpdb; return $a . " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) ";'));
add_filter('posts_where', create_function('$a', 'global $wpdb; return $a . " AND $wpdb->term_taxonomy.taxonomy = \'wpsc_product_category\'";'));
add_filter('posts_orderby', create_function('$a','global $wpdb; return "$wpdb->term_taxonomy.term_id DESC";'));
query_posts('');

Thank you all in advance for your reply!

Upvotes: 1

Views: 10590

Answers (2)

Subharanjan
Subharanjan

Reputation: 668

Try the below code.

/* ----------
-------------
Continue code
-------------
---------- */

<?php
/* Check if this is the products page not the category or single page  */
if( is_products_page() && wpsc_is_product() && (!wpsc_is_in_category()) && (!wpsc_is_single_product()) ) {
    /* Get all the categories for wp e-commerce products */
    $wpec_product_categories = get_terms( 'wpsc_product_category', 'hide_empty=0&parent=0');
    foreach($wpec_product_categories as $wpec_categories){
        $wpec_term_id = $wpec_categories->term_id;
        $wpec_term_name = $wpec_categories->name;
        $wpec_term_slug = $wpec_categories->slug;

        //Skip the categories term(which comes default in wp e-commerce
        if($wpec_term_slug == 'categories') {
            continue;
        }

        //Set the args array
        $wpec_args = array(
            'post_status' => 'publish',
            'post_type'   => 'wpsc-product',
            'numberposts' => 12,
            'showposts' => 12,
            "wpsc_product_category" => $wpec_term_slug
        );

        $wpec_categoryProducts = new WP_Query($wpec_args);
    ?>
        <div class="wpec_productcat_name"><h3><?php echo $wpec_term_name; ?></h3></div>

    <?php /** start the category wise - products loop here */?>
    <?php while ($wpec_categoryProducts->have_posts()) : $wpec_categoryProducts->the_post();
        global $wpsc_custom_meta, $wpsc_variations;
        $wpsc_custom_meta = new wpsc_custom_meta( get_the_ID() );
        $wpsc_variations = new wpsc_variations( get_the_ID() );
    ?>
        <div class="default_product_display product_view_<?php echo wpsc_the_product_id(); ?> <?php echo wpsc_category_class(); ?> group"> 

/* ----------
-------------
Continue code - product display
-------------
---------- */

        </div><!--close default_product_display-->
    <?php endwhile; ?>
    <?php /** end the product loop here */?>     

<?php
}
else {
?>
    <?php /** start the wp e-commerce default product loop here */ ?>
    <?php while (wpsc_have_products()) :  wpsc_the_product(); ?>
        <div class="default_product_display product_view_<?php echo wpsc_the_product_id(); ?> <?php echo wpsc_category_class(); ?> group">

/* ----------
-------------
Continue code - products display(same code as above)
-------------
---------- */

        </div><!--close default_product_display-->
    <?php endwhile; ?>
    <?php /** end the product loop here */?> 

<?php
} //End of else block for products page checking
?>

The above code you have to use inside the product template of WP E-Commerce.

Steps:

– Open the wpsc-products_page.php file. – Find the products loop statement in the code.

<?php /** start the product loop here */?>
<?php while (wpsc_have_products()) :  wpsc_the_product(); ?>

– Find the products loop end statement.

<?php endwhile; ?>
<?php /** end the product loop here */ ?>

– Copy the whole block in between while and endwhile for the product loop. – Then enclose those copied code inside the below mentioned condition. – Save and check the products page.

Upvotes: 7

fgoldwyn
fgoldwyn

Reputation: 1

If you go to the admin panel and click on products, you will see "categories" click on that and create the categories for your products, just like individual product pages. Then in your products page, go to each product and you can select which categories they fit into.

In settings>store>appearance find "Select what product category you want to display on the products page:" and move the arrow to "show list of product categories".

then find "Replace Page Title With Product/Category Name:" click yes.

Then go to the appearance>menu and click on menu. If you scroll down you will see that the product categories you created can be added to your menu. I have put them as sub items to my shop. When someone clicks on the shop, the first page is the list of product categories. If they click on a category, they get a list of products in that category.

I think this is what you are trying to achieve.

My site is: www.greenhillsoaps.com

Hope this helps.

Upvotes: 0

Related Questions