Woocommerce получает товары по определенным категориям

Я разрабатываю темы для woocommerce, мне нужна помощь в получении информации из продуктов по категориям, например, я хочу отображать продукты из категорий «Рубашка» с ограничением на 3 элемента, вот код из тем woo, которые показывают продукты по избранным продуктам, ( я пытался изменить отображение по категориям и не работает)

<ul class="featured-products products">

                <?php
                $args = array( 'post_type' => 'product', 'posts_per_page' => 6, 'meta_query' => array( array('key' => '_visibility','value' => array('catalog', 'visible'),'compare' => 'IN'),array('key' => '_featured','value' => 'yes')) );
                $i = 0;                 
                $loop = new WP_Query( $args );
                while ( $loop->have_posts() ) : $loop->the_post(); $_product; $i++; 

                if ( function_exists( 'get_product' ) ) {
                    $_product = get_product( $loop->post->ID );
                } else { 
                    $_product = new WC_Product( $loop->post->ID );
                }

                ?>

                        <li class="product <?php if ($i%3==0) echo ' last'; if (($i-1)%3==0) echo ' first'; ?>">
                            <div class="inner">
                            <?php woocommerce_show_product_sale_flash( $post, $_product ); ?>
                            <a href="<?php echo get_permalink( $loop->post->ID ) ?>" title="<?php echo esc_attr($loop->post->post_title ? $loop->post->post_title : $loop->post->ID); ?>">
                                <?php if (has_post_thumbnail( $loop->post->ID )) echo get_the_post_thumbnail($loop->post->ID, 'shop_catalog'); else echo '<img src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" />'; ?>
                                <h3><?php the_title(); ?></h3>
                                <span class="price"><?php echo $_product->get_price_html(); ?></span>
                            </a>
                            <?php woocommerce_template_loop_add_to_cart( $loop->post, $_product ); ?>
                            <?php smpl_product_more_details(); ?>
                            </div>
                        </li>

                <?php endwhile; ?>

                </ul>

Я новичок в этом,

заранее спасибо


person thejogja.com    schedule 15.10.2014    source источник


Ответы (3)


Чтобы получить рекомендуемый продукт по определенной категории, вам просто нужно использовать wc_get_products со значением true и указанной вами категорией. См. Код ниже.

<?php

// Get featured products by category. on this case its "shirts" which is the slug of the category.
$query_args = array(
    'featured' => true,  
    'category' => array( 'shirts' ),
);
$products = wc_get_products( $query_args );

Вы можете увидеть полное руководство здесь https://jameshwartlopez.com/plugin/get-featured-products-of-a-category/

person jameshwart lopez    schedule 06.07.2020
comment
Это правильный ответ с использованием WooCommerce во встроенных функциях. - person Tami; 22.07.2021
comment
Из документации wc: эту функцию следует использовать для поиска товаров, чтобы у нас был способ получения списка товаров без учета данных. Аргументы и использование: github.com/woocommerce/woocommerce/wiki/. - person Tami; 22.07.2021

Замените $ args следующим кодом

$args = array(
        'post_type'             => 'product',
        'post_status'           => 'publish',
        'tax_query'             => array(
            array(
                'taxonomy'      => 'product_cat',
                'terms'         => array_map( 'sanitize_title', explode( ',', 'ENTER_CATEGORY' ) ),
                'field'         => 'slug',
                'operator'      => $atts['operator']
            )
        )
    );

Вам просто нужно заменить слово ENTER_CATEGORY на название категории, которую вы хотите отобразить.

Сообщите мне, соответствует ли это вашим требованиям.

person Domain    schedule 24.06.2015

Пожалуйста, используйте запрос ниже

<ul class="products">
<?php
    $args = array( 'post_type' => 'product', 'posts_per_page' => 1, 'product_cat' => 'shoes', 'orderby' => 'rand' );
    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post(); global $product; ?>

        <h2>Shoes</h2>

            <li class="product">    

                <a href="<?php echo get_permalink( $loop->post->ID ) ?>" title="<?php echo esc_attr($loop->post->post_title ? $loop->post->post_title : $loop->post->ID); ?>">

                    <?php woocommerce_show_product_sale_flash( $post, $product ); ?>

                    <?php if (has_post_thumbnail( $loop->post->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" />'; ?>

                    <h3><?php the_title(); ?></h3>

                    <span class="price"><?php echo $product->get_price_html(); ?></span>                    

                </a>

                <?php woocommerce_template_loop_add_to_cart( $loop->post, $product ); ?>

            </li>

<?php endwhile; ?>
<?php wp_reset_query(); ?>
person Atif Tariq    schedule 26.07.2021