Я использовал следующий код, чтобы получить список категорий продуктов из woocommerce на моем сайте WordPress:
<?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 } } ?>
Это отлично работает и возвращает список категорий продуктов. Я сейчас пытаюсь получить список продуктов для определенной категории.
Пример: получить все продукты для cat_id = 34.
Я знаю, что продукты хранятся в виде сообщений, и они пытались сделать это, но не могут показаться.
Как получить список продуктов для определенной категории?
<?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(); ?>
В нем будут перечислены все миниатюры и имена продуктов вместе со ссылками на страницу продукта. измените название категории и posts_per_page в соответствии с вашим требованием.
<?php $args = array( 'post_type' => 'product', 'category' => 34 ); $products = get_posts( $args ); ?>
Это должно захватить все продукты, которые вы хотите, у меня может быть неправильный тип сообщения, хотя я не могу вспомнить, что использует woo-commerce для типа сообщения. Он вернет массив продуктов