Woocommerce按类别推荐产品

时间:2013-09-11 14:09:04

标签: product woocommerce featured

我正在寻找帮助(谢谢)编辑“特色产品”的Woocommerce php小部件。

我认为我需要编辑的文件是:

wp-content/plugins/woocommerce/classes/widgets/class-wc-widget-featured-products.php

问题: 1.特色产品目前展示所有类别的特色产品。

需要编辑: 1.仅显示当前正在查看的类别中的特色产品。

所以这是一个例子:

我有三类(狗粮,猫粮,其他东西)。

每个类别都有一个类别主页:

> www.mysite.com/dog-food

> www.mysite.com/catfood

  

www.mysite.com/other-stuff

当我将特色产品添加到“狗食”类别时,特色产品小部件还包括特色猫粮产品。如果顾客没有猫,这是没用的。

我希望特色产品小部件只显示当前正在查看的类别中的特色产品 - 所以狗食客户只能看到狗食特色产品(不是猫粮或其他东西)

我(想)我需要在上面提到的PHP文件中添加一个争论。以下是文件中的当前代码:

$query_args['meta_query'][] = array(
'key' => '_featured',
'value' => 'yes'
);

我尝试过添加:

$query_args['meta_query'][] = array(
'key' => '_featured',
'value' => 'yes',
'product_cat' => 'current_category'
);

但这不起作用。

任何人都可以提供的帮助将非常感激。

非常感谢提前。

3 个答案:

答案 0 :(得分:4)

使用此wordpress插件

https://wordpress.org/plugins/sp-woocommerce-featured-product-by-category/

在这个插件中,我们刚刚更改了特色产品短代码。

默认短代码为:[featured_products per_page =" 12"列=" 4"]

在分类插件的特色产品的帮助下更改此短代码是:[featured_product_categories cats =" CATEGORY_ID" per_cat =" 6"列=" 3"]

答案 1 :(得分:1)

我不确定编辑小部件,但是我已经使用它将其成功地放在了存档产品模板中:

<?php
$term        = get_queried_object();
$category_id = empty( $term->term_id ) ? 0 : $term->term_id;    

$args = array(
    'post_type' => 'product',
    'meta_key' => '_featured',
    'meta_value' => 'yes',
    'posts_per_page' => 3,
    'tax_query' => array(
        array(
            'taxonomy' => 'product_cat',
            'field' => 'id',
            'terms' => $category_id
        )
     )
);

$featured_query = new WP_Query( $args );

if ($featured_query->have_posts()) : 

    while ($featured_query->have_posts()) : 

        $featured_query->the_post();

        $product = get_product( $featured_query->post->ID );

        wc_get_template_part( 'content', 'product' );

    endwhile;

endif;
wp_reset_query();

?>

答案 2 :(得分:0)

这已经很晚了,但是由于woocommerce不断更新,现在他们引入wc_get_products作为获取产品的标准方法。

下面是我在网站上记录的代码。 https://jameshwartlopez.com/plugin/get-featured-products-of-a-category/

<?php 

// Display featured products by category. on this case its "shirts" which is the slug of the category.
$query_args = array(
    'featured' => true,  
    'category' => array( 'shirts' ),
);
$products = wc_get_products( $query_args );

global $post;
?>
<div class="woocommerce columns-<?php echo esc_attr( $columns ); ?>">
  <?php
    woocommerce_product_loop_start();
    foreach ($products as $product) {
        $post = get_post($product->get_id());
        setup_postdata($post);
        wc_get_template_part('content', 'product');
    }
    wp_reset_postdata();
    woocommerce_product_loop_end();
  ?>
</div>