WooCommerce 카테고리별로 모든 제품 표시


13

WooCommerce를 사용하면 상점의 모든 카테고리를 제목으로 표시하고 모든 제품을 아래에 순서대로 나열하고 싶습니다. 이것이 가능합니까? 범주 목록 또는 특정 범주에 대한 제품 목록을 표시 할 수있는 몇 가지 사항을 보았지만 설명 된 방식으로 모든 항목을 반복하는 것은 없습니다.

다음은 현재 모든 카테고리를 나열하기 위해 사용하는 것입니다.

<?php
$args = array(
    'number'     => $number,
    'orderby'    => $orderby,
    'order'      => $order,
    'hide_empty' => $hide_empty,
    'include'    => $ids
);
$product_categories = get_terms( 'product_cat', $args );
$count = count($product_categories);
if ( $count > 0 ){
    foreach ( $product_categories as $product_category ) {
        echo '<h4><a href="' . get_term_link( $product_category ) . '">' . $product_category->name . '</h4>';
    }
}
?> 

단순히 루프 루프가 필요합니다. 내부 foreach()에서 새 WP_Query()용어를 실행하여 해당 용어의 모든 제품을 가져옵니다.
helgatheviking

나는 이것을하는 방법을 이해한다고 생각하지만, PHP로 카테고리별로 제품을 나열하는 것에 대해 아무것도 찾을 수 없습니다 (찾을 수있는 것은 짧은 코드 넌센스입니다). 해당 코드의 모양을 보여줄 수 있다면 나머지를 알아낼 수 있어야합니다.
JacobTheDev

2
짧은 코드가 필요하지 않으며 카테고리별로 제품을 나열하는 것은 단지 세금 쿼리 입니다.
helgatheviking

나는 단축 코드가 필요하지 않다는 것을 알았는데, 그것이 내가 찾을 수있는 전부라고 말하고 있었는데 도움이되지 않았습니다. 당신이 제공 한 그 링크는 유망 해 보인다. 나는 내일 기회를주고 다시보고 할 것이다.
JacobTheDev

1
확인. 그래도 문제가 해결되지 않으면 새로운 코딩 시도로 질문을 편집하면 살펴 보겠습니다.
helgatheviking

답변:


25

알아 냈습니다! 아래 코드는 모든 카테고리와 각 카테고리 게시물을 자동으로 나열합니다!

$args = array(
    'number'     => $number,
    'orderby'    => 'title',
    'order'      => 'ASC',
    'hide_empty' => $hide_empty,
    'include'    => $ids
);
$product_categories = get_terms( 'product_cat', $args );
$count = count($product_categories);
if ( $count > 0 ){
    foreach ( $product_categories as $product_category ) {
        echo '<h4><a href="' . get_term_link( $product_category ) . '">' . $product_category->name . '</a></h4>';
        $args = array(
            'posts_per_page' => -1,
            'tax_query' => array(
                'relation' => 'AND',
                array(
                    'taxonomy' => 'product_cat',
                    'field' => 'slug',
                    // 'terms' => 'white-wines'
                    'terms' => $product_category->slug
                )
            ),
            'post_type' => 'product',
            'orderby' => 'title,'
        );
        $products = new WP_Query( $args );
        echo "<ul>";
        while ( $products->have_posts() ) {
            $products->the_post();
            ?>
                <li>
                    <a href="<?php the_permalink(); ?>">
                        <?php the_title(); ?>
                    </a>
                </li>
            <?php
        }
        echo "</ul>";
    }
}

좋은. 당신이 정말로 미치게 만들고 싶다면 Transients API 를 살펴보고 싶을 것입니다 ... 매 페이지로드마다 너무 많은 쿼리를 실행하지 못하게합니다.
helgatheviking

각 카테고리의 이미지 썸네일을 얻으려면 어떻게해야합니까?
Alyssa Reyes

@AlyssaReyes 카테고리에는 기본적으로 미리보기 이미지가 없습니다. 이 카테고리에 대한 사용자 정의 필드를 설정 했습니까? 더 자세히 새 질문에 이것을 게시하고 더 잘 이해할 수 있도록 링크를 보내 주시겠습니까?
JacobTheDev

1
고마워요, 당신은 저를 시간을 절약하고 올바른 방향으로 설정했습니다. 이 답변을 향상시킬 수있는 유일한 방법은 WooCommerce의 내장 쿼리 클래스 를 사용하는 것입니다 . 대신 WC_Product_Query, 대신 루프 대신 루프 WP_Query를 사용하십시오 . github.com/woocommerce/woocommerce/wiki/… 쿼리에 대한 Github 설명서를 살펴 보는 이유 는 다음과 같습니다. 더 나은 성능을 위해 사용자 정의 테이블로 이동합니다. " foreachwhile
UncaughtTypeError
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.