2016-07-09 15 views
-1

Ich möchte WooCommerce Produkt auf der Grundlage der Produktkategorie auf meiner Seite Vorlage holen.WooCommerce - Fetch spezifische Produktkategorie in Seitenvorlage

Sagen wir, ich habe eine Kategorie mattress. Ich möchte alle Produkte im Zusammenhang mit dieser mattress Kategorie abrufen.

Hier ist mein Code:

<?php 

     // Start the Loop. 
      while (have_posts()) : the_post(); 

       // Include the page content template. 
       get_template_part('content', 'page'); 

       // If comments are open or we have at least one comment, load up the comment template. 
       if (comments_open() || get_comments_number()) { 
        comments_template(); 
       } 
      endwhile; 
     ?> 

Wie kann ich das erreichen?

Danke.

+1

Dies ist kein „schreibe meine Code bitte "Website. Sie müssen Ihr spezifisches Problem erklären. Wenn jemand unter "geht nicht" antwortet, müssen Sie genau wissen, was nicht funktioniert. Weiter sagst du "lass uns sagen, ich habe eine Kategorie Matratze" - nun, DOCH? Und haben Sie Produkte in dieser Kategorie? Wenn nicht, dann scheint keine der Antworten zu funktionieren. Beide Antworten sind korrekt. Wenn es "nicht funktioniert", liegt das Problem wahrscheinlich darin, wie Sie es implementiert haben. –

+1

Mögliches Duplikat von [WooCommerce Custom Loop, um alle Produkte einer bestimmten Kategorie zu erhalten] (http://stackoverflow.com/questions/15330666/woocommerce-custom-loop-to-get-all-product-from-one-specific- Kategorie) –

Antwort

1

Der folgende Code sollte funktionieren.

<?php 

$query = new WP_Query('posts_per_page=5&post_type=product&product_cat=mattress'); 


If($query->have_posts()){ 
    while($query->have_posts()) { 
     $query->the_post(); 

     // Your Code 


    } 
} 

wp_reset_query(); 
wp_reset_postdata(); 

?> 
+0

Es funktioniert nicht ... Ich habe Seitenvorlage erstellt, die ich versuche, –

+1

anzurufen Ist es möglich, dass Sie den Code hier einfügen, damit ich Ihnen helfen kann – Kan412

2

- - (Update 2 des 8. August) - -

Schließlich ist eine gute Alternative has_term(); wordpress function verwenden, um alle Produkte von einiger Kategorie zu filtern, die in einer if Aussage. Wenn Sie mehrere Kategorien haben, können Sie diese in ein Array einbetten, indem Sie auch die Funktion has_term(); verwenden.

Wie ich auf einen Kommentar, bevor sie unter gesagt haben, denke ich, dass Ihr Problem hier ist:

// Include the page content template. 
get_template_part('content', 'page'); 

So wird ersetze ich es mit einigen benutzerdefinierten Code Ihnen zu zeigen, dass die Bedingung funktioniert fein:

<?php 

    $args = array(
     'post_type'  => 'product', 
     'posts_per_page' => -1 
    ); 

    $loop = new WP_Query($args); 

    // Start the Loop 
    If($loop->have_posts()){ 
     while ($loop->have_posts()) : $loop->the_post(); 

      // Here it is your product category 
      if (has_term('mattress', 'product_cat', $loop->post);) { 

       // from here I display products thumbnails and name 

       echo '<div class="woocommerce-product" style="padding:5px; float:left;">'; 

       if (has_post_thumbnail($product_id)) { 
        echo get_the_post_thumbnail($loop->post->ID, 'shop_catalog'); 
       } else { 
        echo '<img src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" width="300px" height="300px" />'; 
       } 
       echo '<div class="product-name">' . $loop->post->post_name . '</div>'; 
       echo '</div>'; 

      } 

     endwhile; 
    } 
// If needed 
wp_reset_query(); 
wp_reset_postdata(); 

?> 

Es funktioniert auch ohne Bedingung: has_term('mattress', 'product_cat', $loop->post); ersetzt $args ein rray durch diese:

$args = array(
    'post_type'  => 'product', 
    'posts_per_page' => -1, // you can set here number of post per page 
    'tax_query'  => array(array(
      'taxonomy' => 'product_cat', 
      'field' => 'slug', 
      'terms' => 'mattress ' 
    )) 
); 

Dieser Code ist getestet und voll funktionsfähigund es geht auf function.php Datei Ihrer aktiven Kind Thema oder Thema.

Referenz:


- - (Update 1 - 9. Juli) - -

Oder Sie können auch has_category(); Funktion zum Filtern in einem if Aussage auf diese Weise verwenden:

<?php 

    global $post; 

    // Start the Loop 
    while (have_posts()) : the_post(); 

     if (has_category('mattress', $post);) { 

      // Include the page content template. 
      get_template_part('content', 'page'); 

      // If comments are open or we have at least one comment, load up the comment template. 
      if (comments_open() || get_comments_number()) { 
       comments_template(); 
      } 
     } 

    endwhile; 
?> 

du versuchen könnte:

<?php 

    $args = array(
     'post_type'  => 'product', 
     'posts_per_page' => -1, // you can set here number of post per page 
     'tax_query'  => array(array(
       'taxonomy' => 'product_cat', 
       'field' => 'slug', 
       'terms' => 'mattress ' 
     )) 
    ); 

    $loop = new WP_Query($args); 

    If($loop->have_posts()){ 
     while($loop->have_posts()) { 
      $loop->the_post(); 

      // Include the page content template. 
      get_template_part('content', 'page'); 


      // If comments are open or we have at least one comment, load up the comment template. 
      if (comments_open() || get_comments_number()) { 
       comments_template(); 
      } 
     } 
    } 
    // If needed 
    wp_reset_query(); 
    wp_reset_postdata(); 

?> 
+0

Danke für Ihre Antwort .... Ich bekomme Bewertungen auf meiner Seite, aber ich möchte produkt zu matratze kategorie zeigen .. –

+0

@ websmentor.com Ich denke, dass Ihr Problem ist 'get_template_part (' Inhalt ',' Seite '); ... '. Damit sind Sie nicht in der Lage, Produkte anzuzeigen, sondern nur eine Beschreibung, eine Bewertung von der Produktseite zu erhalten ... Sehen Sie sich die in woocommerce enthaltenen Vorlagen an: [Überschreibe Vorlagen über ein Thema] (https://docs.woothemes.com/document/template -Struktur /) ... die Lösung ist in einer anderen Kombination ... Mein Code ist Ok ... schau dir diese Antwort an: http://Stackoverflow.com/a/38278017/3730754 – LoicTheAztec

1
 <ul> 

      <?php 
       $taxonomy  = 'product_cat'; 
       $orderby  = 'title'; 
       $show_count = 0; 
       $pad_counts = 0; 
       $hierarchical = 1; 
       $title  = ''; 
       $empty  = 0; 

      $args = array(
       'taxonomy'  => $taxonomy, 
       'orderby'  => $orderby, 
       'show_count' => $show_count, 
       'pad_counts' => $pad_counts, 
       'hierarchical' => $hierarchical, 
       'title_li'  => $title, 
       'hide_empty' => $empty 
     ); 

     $all_categories = get_categories($args); 
       foreach ($all_categories as $cat) { 
         $category_id = $cat->term_id;?> 

         <li><a href="<?php echo get_term_link($cat->slug, 'product_cat');?>"><?php echo $cat->name;?></a></li> 
      <?php }?> 
     </ul>