"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > WooCommerce 4+의 WooCommerce 제품에 사용자 정의 재고 상태를 추가하는 방법은 무엇입니까?

WooCommerce 4+의 WooCommerce 제품에 사용자 정의 재고 상태를 추가하는 방법은 무엇입니까?

2024년 11월 18일에 게시됨
검색:602

How to Add Custom Stock Statuses to WooCommerce Products in WooCommerce 4 ?

WooCommerce 4의 WooCommerce 제품에 대한 사용자 정의 재고 상태

WooCommerce 4의 제품에 사용자 정의 재고 상태를 추가하는 과정은 비교적 간단합니다. 그러나 상태가 프런트엔드와 백엔드에 올바르게 표시되도록 하려면 특정 기능을 수정해야 합니다.

사용자 정의 재고 상태 추가

사용자 정의 재고 상태를 추가하려면 다음을 추가하세요. 다음 코드를 function.php 파일에 추가하세요:

function filter_woocommerce_product_stock_status_options( $status ) {
    // Add new statuses
    $status['pre_order'] = __('Pre Order', 'woocommerce');
    $status['contact_us'] = __('Contact us', 'woocommerce');

    return $status;
}
add_filter( 'woocommerce_product_stock_status_options', 'filter_woocommerce_product_stock_status_options', 10, 1 );

이 코드는 "사전 주문" 및 "문의하기"라는 두 가지 새로운 상태를 추가합니다.

맞춤 재고 표시 가용성

사용자 정의 상태가 프런트엔드에 올바르게 표시되도록 하려면 다음 변경 사항을 적용하십시오.

// Availability text
function filter_woocommerce_get_availability_text( $availability, $product ) {
    // Get stock status
    switch( $product->get_stock_status() ) {
        case 'pre_order':
            $availability = __( 'Pre Order', 'woocommerce' );
            break;
        case 'contact_us':
            $availability = __( 'Contact us', 'woocommerce' );
            break;
    }

    return $availability;
}
add_filter( 'woocommerce_get_availability_text', 'filter_woocommerce_get_availability_text', 10, 2 );

// Availability CSS class
function filter_woocommerce_get_availability_class( $class, $product ) {
    // Get stock status
    switch( $product->get_stock_status() ) {
        case 'pre_order':
            $class = 'pre-order';
            break;
        case 'contact_us':
            $class = 'contact-us';
            break;
    }

    return $class;
}
add_filter( 'woocommerce_get_availability_class', 'filter_woocommerce_get_availability_class', 10, 2 );

관리 제품 목록에 재고 상태 표시

관리 제품 목록에 사용자 정의 재고 상태를 표시하려면 테이블에서 다음 기능을 수정합니다.

// Admin stock html
function filter_woocommerce_admin_stock_html( $stock_html, $product ) {
    // Simple
    if ( $product->is_type( 'simple' ) ) {
        // Get stock status
        $product_stock_status = $product->get_stock_status();
    // Variable
    } elseif ( $product->is_type( 'variable' ) ) {
        foreach( $product->get_visible_children() as $variation_id ) {
            // Get product
            $variation = wc_get_product( $variation_id );

            // Get stock status
            $product_stock_status = $variation->get_stock_status();
        }
    }

    // Stock status
    switch( $product_stock_status ) {
        case 'pre_order':
            $stock_html = '<mark class="pre-order" style="background:transparent none;color:#33ccff;font-weight:700;line-height:1;">' . __( 'Pre order', 'woocommerce' ) . '</mark>';
            break;
        case 'contact_us':
            $stock_html = '<mark class="contact-us" style="background:transparent none;color:#cc33ff;font-weight:700;line-height:1;">' . __( 'Contact us', 'woocommerce' ) . '</mark>';
            break;
    }

    return $stock_html;
}
add_filter( 'woocommerce_admin_stock_html', 'filter_woocommerce_admin_stock_html', 10, 2 );

선택 사항: 후크에서 사용자 정의 재고 상태 사용

다음과 같은 경우 후크에서 사용자 정의 재고 상태를 사용할 수 있습니다. $product 객체에 대한 액세스 권한이 있거나 전역 $product를 사용할 수 있습니다.

참고:

  • 액세스 권한이 없을 때 전역 $product를 사용하세요. woocommerce_shop_loop_item_title 및 woocommerce_single_product_summary 후크와 같은 $product 개체.
  • woocommerce_get_price_html 후크에서와 같이 기본적으로 콜백 함수에 전달된 경우 $product 개체에 액세스합니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3