2012-02-27 1 views
1

Извините за мой плохой английский. У меня есть WP 3.3.1 & wp-e-commerce.3.8.7.6.2. На странице продуктов (которые используют шаблон wpsc-products_page.php) у меня есть список продуктов. Я хочу сгруппировать эти продукты по категориям. Например:wp e-commerce group продукт по категориям

** Cat1
Продукт 1
Продукт 2

** Cat2
Продукт 1
Продукт 2

** Cat3
Продукт 1
Продукт 2

Я пытаюсь использовать этот метод, но это `ы не работает

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(''); 

Спасибо всем заранее за ответ!

ответ

7

Пробуйте приведенный ниже код.

/* ---------- 
------------- 
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 
?> 

Вышеприведенный код вы должны использовать внутри шаблона продукта WP E-Commerce.

Шаги:

- Открыть файл wpsc-products_page.php. - Найти инструкцию цикла продуктов в коде.

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

- Найти инструкцию по контуру продуктов.

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

- Скопируйте весь блок между временем и временем для цикла продукта. - Затем приложите этот скопированный код в указанное ниже условие. - Сохраните и проверьте страницу продуктов.

+0

Привет, что делать, если я хочу использовать этот код в качестве API (webservice) для возврата продуктов данного идентификатора категории? Thanx заранее. – Malloc

+0

@malloc: Да, вы можете создать функцию, которая принимает идентификатор категории, а затем запрашивать продукты, запустить цикл, чтобы отформатировать его в соответствии с вашими потребностями и вернуться. Пример: $ term = get_term ($ category_id, 'wpsc_product_category'); $ wpec_term_slug = $ term-> slug; $ арг = массив ( \t 'post_status' => 'опубликовать', \t 'post_parent' => 0, \t 'post_type' => 'wpsc-продукт', \t 'wpsc_product_category' => $ wpec_term_slug \t ); $ products = get_posts ($ args); – Subharanjan

0

Если вы заходите на панель администратора и нажимаете на продукты, вы увидите, что «категории» нажимают на это и создают категории для ваших продуктов, как и отдельные страницы продуктов. Затем на странице продуктов перейдите к каждому продукту, и вы можете выбрать категории, в которые они входят.

В настройках> магазин> внешний вид найдите «Выберите, какую категорию продуктов вы хотите отображать на странице продуктов:» и переместите стрелку в «показать список категорий товаров».

затем найдите «Заменить название страницы с названием продукта/категории»: нажмите «Да».

Затем перейдите в меню «Внешний вид» и нажмите на меню. Если вы прокрутите вниз, вы увидите, что категории товаров, которые вы создали, можно добавить в меню. Я поместил их в качестве предметов в свой магазин. Когда кто-то нажимает на магазин, первая страница - это список категорий товаров. Если они нажимают на категорию, они получают список продуктов в этой категории.

Я думаю, что это то, чего вы пытаетесь достичь.

Моего сайт: www.greenhillsoaps.com

Надеется, что это помогает.

Смежные вопросы