2017-06-27 13 views
0

私は、販売している商品のみを表示するページ(デフォルトのウ - コマースのアーカイブスタイル)を作成しようとしています。ここで言及するには、私は、可変の製品だけでなく、簡単です。 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>'; 

作ってみましたが、結果として、私は唯一の2製品を取得します。

ヘルプやアイデアはありますか?

答えて

1

なぜ新しいショートコードを作成しようとしていますか?

[sale_products per_page="12"]

あなたは、私がカスタムを作成することで、この中に一時的な解決策を見つけたhere

+0

を聞きたいのですが、他の提案があれば

$args = array( 'post_type' => 'product', 'post_status' => 'publish', 'posts_per_page' => -1 ); ob_start(); $loop = new WP_Query($args); if ($loop->have_posts()) { woocommerce_product_loop_start(); while ($loop->have_posts()) : $loop->the_post(); $id = get_the_ID(); $_product = wc_get_product($id); if($_product->is_on_sale()){ wc_get_template_part('content', 'product'); } endwhile; woocommerce_product_loop_end(); } wp_reset_postdata(); return '<div class="woocommerce columns-4">' . ob_get_clean() . '</div>'; } add_shortcode('variation_sale_product', 'variable_sale_products'); 

はうーん、私はこれを試してみましたが、それは私だけ2製品を返します。しかし、私の電子ショップでは、私はより多くの製品を販売しています。 –

+0

@GeorgeNtoumなぜそれが分からないのですか?あなたの他の製品に販売価格がないことがありますか? 'wc_get_product_ids_on_sale()'コードは、販売価格でゼロ以外の値を探します。それが正しく追加されているかどうかを確認する必要があります。 – KbLaD3

+0

ええ、それは私にも変わっているようです。私はすべての製品をループするPHPファイルを作成し、各製品について$ product-> is_on_sale()メソッドを使用してチェックを行い、すべての販売製品を返しました。だから私は、製品が売り上げでおかしいと思うことを理解しています。 (また、私は販売バッジを持っている)。私は見つけた一時的な解決策を投稿します。 –

0

リスト全体を見ることができます:Woocommerceは、自身のアーカイブのスタイルで販売された製品を示すために、独自のショートを提供してきましたショートコードなぜ私はデフォルトのwoocommerceショートコードですべての販売製品を取得しないのか分からない。

これが私の仕事:

関数は($ ATTS){ グローバルの$ woocommerce、$製品をvariable_sale_products。あなたは私はあなたから

関連する問題