>  기사  >  백엔드 개발  >  단일 속성 제품의 WooCommerce 변형 드롭다운에 재고 상태를 표시하는 방법은 무엇입니까?

단일 속성 제품의 WooCommerce 변형 드롭다운에 재고 상태를 표시하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-30 14:54:03701검색

How to Display Stock Status in WooCommerce Variation Dropdown for Single-Attribute Products?

WooCommerce 변형 드롭다운에서 변형 재고 상태를 향상하는 방법

문제:

WooCommerce 제품에 제품 변형을 표시할 때 페이지 드롭다운에서는 각 변형의 재고 상태(예: 재고 있음/품절)를 쉽게 확인할 수 없습니다.

해결책:

단일 속성에 대한 업데이트된 기능 변형(2021년 도입)

참고: 이 솔루션은 드롭다운 속성이 하나만 있는 가변 제품에 적합합니다.

wc_dropdown_variation_attribute_options 함수 수정:

<code class="php">add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'show_stock_status_in_dropdown', 10, 2);
function show_stock_status_in_dropdown( $html, $args ) {
    // Ensure there's only one variation attribute
    if( sizeof($args['product']->get_variation_attributes()) == 1 ) {
        $options = $args['options'];
        $product = $args['product'];
        $attribute = $args['attribute'];
        $name = $args['name'] ? $args['name'] : 'attribute_' . sanitize_title( $attribute );
        $show_option_none = $args['show_option_none'] ? true : false;

        if ( ! empty( $options ) ) {
            $html = '<select id="' . esc_attr( $id ) . '" class="' . esc_attr( $class ) . '" name="' . esc_attr( $name ) . '" data-attribute_name="attribute_' . esc_attr( sanitize_title( $attribute ) ) . '" data-show_option_none="' . ( $show_option_none ? 'yes' : 'no' ) . '">';
            $html .= '<option value="">' . esc_html( $show_option_none_text ) . '</option>';

            foreach ( $options as $option ) {
                $stock_status = get_stock_status_text( $product, $name, $option );
                $html .= '<option value="' . esc_attr( $option ) . '" ' . selected( sanitize_title( $args['selected'] ), $option, false ) . '>' . esc_html( apply_filters( 'woocommerce_variation_option_name', $option ) . $stock_status ) . '</option>';
            }
            $html .= '</select>';
        }
    }
    return $html;
}</code>

추가 기능: 각 변형에 대한 재고 상태 텍스트 가져오기

<code class="php">function get_stock_status_text( $product, $name, $term_slug ) {
    foreach ( $product->get_available_variations() as $variation ){
        if($variation['attributes'][$name] == $term_slug ) {
            $stock = $variation['is_in_stock'];
            break;
        }
    }
    return $stock == 1 ? ' - (In Stock)' : ' - (Out of Stock)';
}</code>

사용법:

위 코드 조각을 테마의 function.php 파일 또는 플러그인 파일입니다.

제한 사항:

  • 제공된 솔루션은 하나의 드롭다운 속성이 있는 가변 제품에만 적용됩니다.
  • 여러 드롭다운이 있는 제품의 경우 속성에 따라 재고현황 표시가 정확하지 않을 수 있습니다.

위 내용은 단일 속성 제품의 WooCommerce 변형 드롭다운에 재고 상태를 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.