2014-10-11 125 views
2

相關產品是從您的商店中抽取與當前產品共享相同標籤或類別的其他產品的部分。Woocommerce:只顯示來自同一子類別的相關產品

源:Woocommerce Docs

可以說,我賣我的商店表(和其他物品)。表是一個類別。我有3個子類與小類,中等和大類一起使用。

我想要什麼:當你點擊一張小桌子時。相關產品只應顯示小表。 它做什麼:當你點擊一張小桌子時。相關的產品顯示了一個不論大小的表格。

有誰知道我可以如何改變它,以我想要的方式?

回答

0

爲了做到這一點,所有的產品必須只有一個子類別,如小,中等..等,但如果你的產品有兩個以上是不可能的,我想。

但有來完成你想要什麼簡單的方法,答案是交叉銷售pleace read this

0

你必須在你的模板woocommerce->單品文件夾和文件related.php創建。

只需粘貼此代碼即可。

<?php 
/** 
* Related Products 
* 
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/related.php. 
* 
* HOWEVER, on occasion WooCommerce will need to update template files and you 
* (the theme developer) will need to copy the new files to your theme to 
* maintain compatibility. We try to do this as little as possible, but it does 
* happen. When this occurs the version of the template file will be bumped and 
* the readme will list any important changes. 
* 
* @see   https://docs.woocommerce.com/document/template-structure/ 
* @author  WooThemes 
* @package  WooCommerce/Templates 
* @version  1.6.4 
*/ 

if (! defined('ABSPATH')) { 
    exit; 
} 

global $product, $woocommerce_loop; 

if (empty($product) || ! $product->exists()) { 
    return; 
} 

if (! $related = $product->get_related($posts_per_page)) { 
    return; 
} 

$cats_array = array(0); 

// get categories 
$terms = wp_get_post_terms($product->id, 'product_cat'); 

// select only the category which doesn't have any children 
foreach ($terms as $term) { 
    $children = get_term_children($term->term_id, 'product_cat'); 
    if (!sizeof($children)) 
    $cats_array[] = $term->term_id; 
} 

var_dump($cats_array); 

$args = apply_filters('woocommerce_related_products_args', array(
    'post_type' => 'product', 
    'ignore_sticky_posts' => 1, 
    'no_found_rows' => 1, 
    'posts_per_page' => $posts_per_page, 
    'orderby' => $orderby, 
    'tax_query' => array(
     array(
      'taxonomy' => 'product_cat', 
      'field' => 'id', 
      'terms' => $cats_array 
     ), 
    ) 
)); 

$products     = new WP_Query($args); 
$woocommerce_loop['name'] = 'related'; 
$woocommerce_loop['columns'] = apply_filters('woocommerce_related_products_columns', $columns); 

if ($products->have_posts()) : ?> 

    <div class="related products"> 

     <h2><?php _e('Related Products', 'woocommerce'); ?></h2> 

     <?php woocommerce_product_loop_start(); ?> 

      <?php while ($products->have_posts()) : $products->the_post(); ?> 

       <?php wc_get_template_part('content', 'product'); ?> 

      <?php endwhile; // end of the loop. ?> 

     <?php woocommerce_product_loop_end(); ?> 

    </div> 

<?php endif; 

wp_reset_postdata(); 
相關問題