创建包含促销产品的 WooCommerce 页面

Geo*_*oum 1 wordpress woocommerce

我正在尝试创建一个页面(默认 woocommerce 存档样式),它只会显示正在销售的产品。在这里要提一下,我只有可变的产品,而且并不简单。

我尝试制作我的自定义简码

global $woocommerce_loop;
    $atts = shortcode_atts( array(
        'per_page' => '-1',
        'columns'  => '4',
        'orderby'  => 'title',
        'order'    => 'asc'
    ), $atts );

    // Get products on sale
    $product_ids_on_sale = wc_get_product_ids_on_sale();

    $meta_query = WC()->query->get_meta_query();
    $args = array(
        'posts_per_page'    => $atts['per_page'],
        'orderby'           => $atts['orderby'],
        'order'             => $atts['order'],
        'no_found_rows'     => 1,
        'post_status'       => 'publish',
        'post_type'         => 'product',
        'meta_query'        => $meta_query,
        'post__in'          => array_merge( array( 0 ), $product_ids_on_sale )
    );
    ob_start();
    $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) );
    $columns = absint( $atts['columns'] );
    $woocommerce_loop['columns'] = $columns;
    if ( $products->have_posts() ) : 

        woocommerce_product_loop_start();

            while ( $products->have_posts() ) : $products->the_post(); 

                wc_get_template_part( 'content', 'product' ); 

            endwhile; // end of the loop. 

         woocommerce_product_loop_end(); 

     endif;
    wp_reset_postdata();
    return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>';
Run Code Online (Sandbox Code Playgroud)

但结果我只得到 2 个产品。

有什么帮助或想法吗?

小智 5

您为什么要尝试创建新的简码?Woocommerce 提供了自己的短代码,以自己的档案风格显示在售产品:

[sale_products per_page="12"]

您可以在此处查看完整列表