Woocommerce Random Upsells

时间:2014-02-17 18:01:20

标签: woocommerce

Woocommerce

有没有办法显示属于同一产品类别的随机追加销售产品,而不是为每种产品手动添加销售额?

非常感谢...

2 个答案:

答案 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&hellip;', '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版本上测试过并且有效。快乐的编码!