2

我正在寻求帮助(谢谢)为“特色产品”编辑 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'
);

但这没有用。

任何人都可以提供的任何帮助将不胜感激。

提前谢谢了。

4

3 回答 3

4

使用这个 wordpress 插件

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

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

默认短代码是:[featured_products per_page="12" columns="4"]

并且在分类插件的特色产品的帮助下这个短代码的变化是:[featured_product_categories cat="CATEGORY_ID" per_cat="6" columns="3"]

于 2014-05-22T04:51:33.460 回答
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();

?>
于 2014-12-03T18:33:54.257 回答
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>
于 2020-07-06T08:03:35.897 回答