Woocommerce
有没有办法显示属于同一产品类别的随机追加销售产品,而不是为每种产品手动添加销售额?
非常感谢...
答案 0 :(得分:0)
只需修改模板/woocommerce/single-product/up-sells.php。
$cats = get_the_terms($product->id, 'product_cat');
if (!count($cats)) {
return;
}
$args = array(
'post_type' => 'product',
'ignore_sticky_posts' => 1,
'no_found_rows' => 1,
'posts_per_page' => $posts_per_page,
'orderby' => 'rand',
'post__not_in' => array( $product->id ),
'meta_query' => $meta_query,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cats->term_id
)
)
);
$products = new WP_Query( $args );
答案 1 :(得分:0)
嘿,我遇到了这个线程试图弄清楚如何做类似的事情。我使用@ViszinisA给出的大部分查询来调整up-sells.php模板。
up-sells.php 从第23行开始:
$cats = get_the_terms($product->id, 'product_cat');
if (!count($cats)) {
return;
}
$args = array(
'post_type' => 'product',
'ignore_sticky_posts' => 1,
'no_found_rows' => 1,
'posts_per_page' => 5,
'orderby' => 'rand',
'post__not_in' => array( $product->id ),
'meta_query' => $meta_query,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cats[0]->term_id
)
)
);
$prodQuery = new WP_Query( $args );
if ( $prodQuery->have_posts() ) {
$postProds = $prodQuery->posts;
?>
<section class="up-sells upsells products">
<h2><?php esc_html_e( 'You may also like…', 'woocommerce' ) ?></h2>
<br>
<?php woocommerce_product_loop_start(); ?>
<?php foreach ( $postProds as $postProd ) : ?>
<?php
// $post_object = get_post( $upsell->get_id() );
setup_postdata( $GLOBALS['post'] =& $postProd );
wc_get_template_part( 'content', 'product' ); ?>
<?php endforeach; ?>
<?php woocommerce_product_loop_end(); ?>
</section>
<?php
}
它应该在&#34; wp_reset_postdata();&#34;之前的第69行(ish)结束。确保使用上面的代码替换这些行之间的内容,而不仅仅是添加它。
保持谨慎:此代码将使您设置的任何手动加售不会显示在单个产品页面上。相反,它从当前产品的术语数组中抽取第一类中的5个随机产品。如果该类别中的产品少于5个,则会显示所有产品。
确保在编辑之前将up-sells.php复制到您的子主题目录中。
此代码已在3.0.0版本上测试过并且有效。快乐的编码!