it-swarm.com.de

Woocommerce bekommt Produkte

Ich habe den folgenden Code verwendet, um die Liste der Produktkategorien von WooCommerce auf meiner WordPress Website zu erhalten:

 <?php
  $taxonomy     = 'product_cat';
  $orderby      = 'name';  
  $show_count   = 0;      // 1 for yes, 0 for no
  $pad_counts   = 0;      // 1 for yes, 0 for no
  $hierarchical = 0;      // 1 for yes, 0 for no  
  $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
);
?>
<?php $all_categories = get_categories( $args );

//print_r($all_categories);
foreach ($all_categories as $cat) {
    //print_r($cat);
    if($cat->category_parent == 0) {
        $category_id = $cat->term_id;

?>     

<?php       

        echo '<br /><a href="'. get_term_link($cat->slug, 'product_cat') .'">'. $cat->name .'</a>'; ?>


        <?php
        $args2 = array(
          'taxonomy'     => $taxonomy,
          'child_of'     => 0,
          'parent'       => $category_id,
          'orderby'      => $orderby,
          'show_count'   => $show_count,
          'pad_counts'   => $pad_counts,
          'hierarchical' => $hierarchical,
          'title_li'     => $title,
          'hide_empty'   => $empty
        );
        $sub_cats = get_categories( $args2 );
        if($sub_cats) {
            foreach($sub_cats as $sub_category) {
                echo  $sub_category->name ;
            }

        } ?>



    <?php }     
}
?>

Dies funktioniert einwandfrei und gibt die Liste der Produktkategorien zurück. Ich habe jetzt versucht, eine Liste der Produkte für eine bestimmte Kategorie zu erhalten.

Beispiel: Holen Sie sich alle Produkte für mit cat_id=34.

Ich weiß, dass Produkte als Posts gespeichert werden, und habe versucht, dies zu erreichen, kann aber nicht scheinen.

Wie erhalte ich die Liste der Produkte für eine bestimmte Kategorie?

37
Tester
<?php  
    $args = array(
        'post_type'      => 'product',
        'posts_per_page' => 10,
        'product_cat'    => 'hoodies'
    );

    $loop = new WP_Query( $args );

    while ( $loop->have_posts() ) : $loop->the_post();
        global $product;
        echo '<br /><a href="'.get_permalink().'">' . woocommerce_get_product_thumbnail().' '.get_the_title().'</a>';
    endwhile;

    wp_reset_query();
?>

Daraufhin werden alle Miniaturansichten und Namen des Produkts sowie deren Links zur Produktseite aufgelistet. Ändern Sie den Kategorienamen und posts_per_page entsprechend Ihren Anforderungen.

63
Suman.hassan95
<?php
$args     = array( 'post_type' => 'product', 'category' => 34, 'posts_per_page' => -1 );
$products = get_posts( $args ); 
?>

Dies sollte alle gewünschten Produkte enthalten. Möglicherweise ist der Post-Typ falsch, obwohl ich mich nicht genau erinnern kann, was Woo-Commerce für den Post-Typ verwendet. Es wird eine Reihe von Produkten zurückgegeben

24
Hunter WebDev

Verwenden Sie nicht WP_Query() oder get_posts(). Aus dem WooCommerce-Dokument:

wc_get_products und WC_Product_Query bieten eine Standardmethode zum Abrufen von Produkten, die sicher ist und in zukünftigen WooCommerce-Versionen aufgrund von Datenbankänderungen nicht mehr funktioniert. Das Erstellen von benutzerdefinierten WP_Queries oder Datenbankabfragen kann Ihren Code in zukünftigen Versionen von WooCommerce beschädigen, wenn Daten für eine bessere Leistung in benutzerdefinierte Tabellen verschoben werden.

Sie können die gewünschten Produkte folgendermaßen abrufen:

$args = array(
    'category' => array( 34 ),
    'orderby'  => 'name',
);
$products = wc_get_products( $args );

WooCommerce Dokumentation

22

Verwenden Sie immer tax_query, um Posts/Produkte aus einer bestimmten Kategorie oder einer anderen Taxonomie abzurufen. Sie können die Produkte auch mit ID/Slug bestimmter Taxonomie erhalten ...

$the_query = new WP_Query( array(
    'post_type' => 'product',
    'tax_query' => array(
        array (
            'taxonomy' => 'product_cat',
            'field' => 'slug',
            'terms' => 'accessories',
        )
    ),
) );

while ( $the_query->have_posts() ) :
    $the_query->the_post();
    the_title(); echo "<br>";
endwhile;


wp_reset_postdata();
0
Hritik Pandey