我正在寻找帮助(谢谢)编辑“特色产品”的Woocommerce php小部件。
我认为我需要编辑的文件是:
wp-content/plugins/woocommerce/classes/widgets/class-wc-widget-featured-products.php
问题: 1.特色产品目前展示所有类别的特色产品。
需要编辑: 1.仅显示当前正在查看的类别中的特色产品。
所以这是一个例子:
我有三类(狗粮,猫粮,其他东西)。
每个类别都有一个类别主页:
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'
);
但这不起作用。
任何人都可以提供的帮助将非常感激。
非常感谢提前。
答案 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>