php - WooCommerce 3.0 이상에서 간단한 설명에 속성 추가




wordpress attributes (2)

LoicTheAztec의 답변을 구축하는 방법 :

그의 코드는 제품 -> 속성 아래 WP 백엔드에서 속성을 미리 정의한 경우에만 작동합니다. 제품 페이지에서 설정 한 개별 (사용자 정의) 제품 속성으로 작업하는 경우 wc_get_product_terms ()는 아무 것도 리턴하지 않습니다. 사전 정의 된 속성은 "pa_"접두어로 인식 할 수 있으며 "woocommerce_attribute_taxonomies"테이블에 저장됩니다.

LoicTheAztec이 제안한 것과 동일한 방식으로 이러한 개별 속성을 표시하려면 다음 코드를 사용하십시오.

add_action( 'woocommerce_shop_loop_item_title', 'custom_attributes_display', 20);
function custom_attributes_display()
{
    // Just for product category archive pages
    if(is_product_category())
    {
        global $product;

        // get all product attributes
        $attributes = $product->get_attributes();
        // the array of attributes you want to display (shown in same order)
        $show_attributes = array('My Attribute A', 'Another Attribute B');
        foreach($show_attributes as $key => $show_attribute)
        {
            foreach($attributes as $attribute)
            {
                // check if current attribute is among the ones to be shown
                if ($attribute->get_name() == $show_attribute)
                {
                    echo $attribute->get_options()[0];
                    // seperate attributes by "/"
                    if (count($show_attributes) > 1)
                        echo '/';
                    unset($show_attributes[$key]);
                    break;
                }
            }
        }
    }
}

모든 제품의 속성을 간단한 설명에 삽입하여 클라이언트가 빠른보기를 열고이 속성을 확인할 수 있도록하고 싶습니다.

이미이 답변을 시도했습니다. 보관소 카테고리 페이지에 특정 제품 속성 값 표시

Woocommerce - 단축 코드가있는 단일 제품 속성을 Frontend에 표시합니다.

그리고 나는 그것을 작동하게 만들 수 없었다. WooCommerce가 버전 3.0 이상으로 업데이트 되었기 때문에 그것이되어야한다고 생각합니다.

누구든지 그것을 만드는 방법을 알고 있습니까?

감사


업데이트 3 (단순 제품의 자동화, WC 호환성)

// Compatibility for WC 3+ and automation enhancements
add_action( 'woocommerce_shop_loop_item_title', 'custom_attributes_display', 20 );
function custom_attributes_display(){
    global $product;

    // Just for simple products
    if( ! $product->is_type( 'simple' ) ) return;

    $loop_count = 0;

    echo '<div>';

    // Get the attributes taxonomy slugs (Updated and dynamic now)
    $attributes_taxonomy = $product->get_attributes();
    // OR set an indexed array of taxonomy slug (key) and name (value) to chose which ones, like:
    // $attributes_taxonomy = array('pa_nopeus' => 'Nopeus', 'pa_liito' => 'Liito, 'pa_vakaus' => 'Vaukaus' );

    foreach( $attributes_taxonomy as $taxonomy => $attribute ) {

        // Getting the term names of an attribute (set in a coma separated string if many values)
        $attribute_terms = wp_get_post_terms( get_the_id(), $taxonomy, array( 'fields' => 'names' ) );
        $terms_string = implode( ',', $attribute_terms );

        // Displays only if attribute exist for the product
        if( count( $attribute_terms ) > 0 ){ // Updated
            echo $terms_string;

            // Separating each number by a " | " (Updated and dynamic now)
            $attr_count = count( $attributes_taxonomy );
            $loop_count++;
            if( $loop_count < $attr_count && $attr_count > 1 ) echo ' | ';
        }
    }

    echo '</div>';
}

업데이트 WooCommerce 버전 3.0 이상.

// For WooCommerce Version 3.0+ (only)
add_action( 'woocommerce_shop_loop_item_title', 'custom_attributes_display', 20 );
function custom_attributes_display(){

    // Just for product category archives pages
    if(is_product_category()){
        global $product;

        // the array of attributes names
        $attribute_names = array('pa_nopeus', 'pa_liito', 'pa_vakaus', 'pa_feidi');
        foreach( $attribute_names as $key => $attribute_name ) {

            // For WooCommerce version 3.0+
            $product_id = $product->get_id(); // WC 3.0+

            // Getting the value of an attribute (OK for WC 3.0+)
            $wc_term = wc_get_product_terms( $product_id, $attribute_name);
            $attribute_value = array_shift($wc_term);

            // Displays only if attribute exist for the product
            if(!empty($attribute_value) || '0' == $attribute_value ){ // Updated
                echo $attribute_value;

                // Separating each number by a " / "
                if($key < 3) echo ' / ';
            }
        }
    }
}

코드는 활성 자식 테마 (또는 테마)의 function.php 파일이나 모든 플러그인 파일에 있습니다.

이제 WC 3.0 이상에서 작동해야합니다.

이 답변 코드와 관련 : 아카이브 카테고리 페이지에 특정 제품 속성 값을 표시하십시오.





products