programing

Woocommerce에서 '품절' 제품 숨기기

elseif 2023. 4. 4. 21:06

Woocommerce에서 '품절' 제품 숨기기

"제품" 및 "재고"에서 "카탈로그에서 품절품목 숨기기" 설정을 확인했습니다.

이제 매진된 모든 제품이 아카이브/카테고리 보기에 숨겨집니다.아직까지는 좋아.

문제는 숨겨진 (품절된) 상품이 페이지 단위로 계산된다는 것입니다.첫 페이지에 품절된 상품이 3개 있으면 재고가 있는 상품만 (6)으로 표시됩니다.

또한 이러한 "숨겨진" 제품도 여전히 검색 가능하며 다른 위젯을 통해 볼 수 있는 것으로 보입니다.

어떻게 고칠지 생각나는 거 없어?품절된 상품은 정말 숨기라는 것입니다.아니면 수동으로 제거해야 하나요?

테마의 기능에 이것을 추가해 보세요.php 파일:

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {


$q->set( 'meta_query', array(array(
    'key'       => '_stock_status',
    'value'     => 'outofstock',
    'compare'   => 'NOT IN'
)));

}

remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

다음 URL에서 코드를 수정했습니다.http://www.wptaskforce.com/how-to-exclude-one-or-more-category-in-woocommerce-shop-page/

사이트가 오프라인으로 전환될 경우를 대비해 여기에 다시 저장: (이 코드는 특정 제품 카테고리를 제외합니다.)

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {

$q->set( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'PUT YOUR CATEGORY HERE' ), // Don't display products in the membership category on the shop page . For multiple category , separate it with comma.
'operator' => 'NOT IN'
)));

}



remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

자기 메모:항상 개발자의 Changelog를 읽어보십시오.

답변은 http://develop.woothemes.com/woocommerce/2014/02/solving-common-issues-after-updating-to-woocommerce-2-1/ #category-contribute-http://http://develop.woothemes.com/woocommerce/2014/02/solving-common-issues-after-updating-to-woocommerce-2-1/ 에서 찾을 수 있습니다.

카테고리의 제품 수가 너무 많거나 적은 경우 WooCommerce 2.1로 업데이트한 후 간단한 해결 방법이 있습니다.

WordPress 관리 패널의 WooCommerce > System Status에 있는 'Tools' 탭으로 이동합니다.여기서는 먼저 '조건 다시 마운트' 버튼을 사용한 다음 '과도한 항목 지우기' 버튼을 사용합니다.이것에 의해, 시스템은 다음에 카테고리가 로드될 때에, 모든 제품을 재검표합니다.

업데이트 : 재고 수량을 0으로 변경하는 것만으로는 부족하다는 점도 유의하시기 바랍니다.또한 "재고 상태"를 "품절"로 설정해야 합니다.그렇지 않을 경우 재고가 없더라도 매장에서 계산됩니다.

저는 더 쉬운 방법을 찾았습니다. 만약 누군가가 여전히 woocommerce에 재고가 없는 제품을 숨기고 싶다면, html을 편집하지 않고 이 간단한 단계를 따르세요!

  1. WooCommerce -> Settings로 이동합니다.
  2. 인벤토리로 이동
  3. 체크박스가 표시되어 있습니다.이 체크박스는 영어로 되어 있습니다만, 필요한 것을 찾으실 수 있습니다.
  4. 절약하다

이는 공식 woocommerce 쇼트코드를 사용하는 경우에만 동작합니다.단, 비주얼 컴포저로 페이지를 작성하고 커스터마이즈된 플러그인 또는 서드파티제의 플러그인 또는 쇼트코드를 사용하는 경우 첫 번째 단계는 루프에서 실행되는 쿼리를 실행하는 것입니다.그 후 다음과 같이 수정합니다.

$params = array(
        'posts_per_page' => 5,
        'post_type' => array('product', 'product_variation'),
        'meta_query' => array(
            array(
                'key' => '_stock_status',
                'value' => 'instock'
            )
        )
);

가장 중요한 건

    'meta_query' => array(
        array(
            'key' => '_stock_status',
            'value' => 'instock'
        )
    )

재고가 없는 제품을 숨기는 단계

  1. WordPress 대시보드의 WooCommerce -> Settings 서브메뉴로 이동합니다.
  2. [ Products ]탭 > [ Inventory ]서브탭을 클릭합니다.
  3. 품절된 제품을 숨기는 재고 부족 가시성 옵션을 선택하십시오.

여기에 이미지 설명 입력

이 질문은 오래전에 했던 질문이라는 을 알고 있습니다만, 지금은 해결 방법이 다르기 때문에 저와 같은 문제를 안고 계신 분들을 위해 글을 올립니다.WooCommerce 5.3.0에서 테스트 완료

솔루션: 우선 Woocomerce > Settings의 "Hide products that out of stock" 체크박스가 꺼진 것을 확인하고 이 PHP 코드를 자녀 테마 함수에 추가합니다.php 파일:

add_action('woocommerce_product_query', 'show_only_instock_products');

function show_only_instock_products($query) {
        $meta_query = $query->get( 'meta_query' );
        $meta_query[] = array(
                'key'       => '_stock_status',
                'compare'   => '=',
                'value'     => 'instock'
        );
        $query->set( 'meta_query', $meta_query );
}

도매상과의 통합으로 재고 레벨이 매시간 갱신되고 수천 개의 상품이 있는 저희 가게에서는 잘 작동합니다.

자녀 테마 함수 하단에 PHP 스니펫을 배치할 수 있습니다.php 파일.

add_action('woocommerce_product_query', 'custom_woocommerce_product_query');

function custom_woocommerce_product_query($q)
    {
        if (!is_admin())
        {
            $oos_query = new WP_Query(['meta_query' => [['key' => '_stock_status', 'value' => 'outofstock', 'compare' => '=', ], ], 'post_type' => 'product', 'posts_per_page' => - 1, 'fields' => 'ids', ]);
            $exclude_ids = $oos_query->posts;
    
            $q->set('post__not_in', $exclude_ids);
        }
    }

언급URL : https://stackoverflow.com/questions/24480982/hide-out-of-stock-products-in-woocommerce