2017-06-27 2 views
0

Ich versuche, eine Seite zu machen, (Standard Woocommerce-Archiv-Stil), dass es nur die Produkte, die in Sale sind. Hier zu erwähnen, dass ich nur variable Produkte habe und nicht einfach.Create WooCommerce Page mit Produkten zum Verkauf

Ich habe versucht, meine Gewohnheit Short

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>'; 

sondern als Ergebnis bekomme ich nur 2 Produkte zu machen.

Irgendwelche Hilfe oder Ideen?

Antwort

1

Warum versuchen Sie, einen neuen Shortcode zu erstellen? WooCommerce hat seinen eigenen Shortcode zur Verfügung gestellt, die zum Verkauf angebotenen Produkte in einem eigenen Archiv-Stil zeigen:

[sale_products per_page="12"]

Sie die ganze Liste sieht here

+0

Hmm, ich dies versucht haben, aber es gibt mir nur 2 Produkte. Aber in meinem E-Shop habe ich viel mehr Produkte im Angebot. –

+0

@GeorgeNtoum Ich verstehe nicht, warum das so ist. Könnte es sein, dass Ihre anderen Produkte keinen Verkaufspreis haben? Der Code 'wc_get_product_ids_on_sale()' sucht nach einem Wert ungleich null auf dem Verkaufspreis. Möglicherweise müssen Sie prüfen, ob das korrekt hinzugefügt wurde. – KbLaD3

+0

Ja, es scheint mir auch komisch. Ich habe eine PHP-Datei, die alle Produkte und für jedes Produkt eine Schleife über die $ product-> is_on_sale() -Methode machen und in mir alle Verkaufsprodukte zurückgegeben. So verstehe ich, dass die Produkte mit dem Verkauf okey sind. (auch ich habe die Verkaufsabzeichen). Ich werde eine vorläufige Lösung veröffentlichen, die ich herausgefunden habe. –

0

ich in diesem eine vorübergehende Lösung fand heraus, indem Sie ein benutzerdefinierte Erstellung Kurzcode Ich weiß nicht, warum ich nicht alle Sale-Produkte mit dem Standard-Woocommerce-Shortcode bekomme.

Dieser arbeitete für mich:

Funktion variable_sale_products ($ atts) {global $ WooCommerce, $ Produkt;

$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'); 

Wenn Sie irgendeinen anderen Vorschlag Ich mag würde von Ihnen hören

Verwandte Themen