2017-02-06 2 views
-1

WooCommerce 제품 스토어에 대한 등급으로 필터를 추가하고 간단한 설명으로 내 제품에 등급을 매기 위해 이미지를 사용하고 있습니다. 약 180 제품. 그리고 나는 심지어 내 가게에서 평점을 매기는 옵션을 추가하는 것을 잊어 버렸습니다.Wordpress의 180 WooCommerce 제품에 속성을 부여하려면 어떻게해야합니까?

모든 제품에 등급에 대한 속성을 하나씩 추가 할 수 있지만 오랜 시간이 걸립니다.

그래서 작업을 빨리 마칠 수있는 트릭이 있습니까? 간단한 설명의 내 이미지는 4.7.png, 4.8.png와 같은 이름을 가지므로 이러한 이미지 이름을 가져 와서 속성에 자동으로 추가 할 수 있습니까?

Link

감사합니다.

+2

가능한 방법 : 제품 중 하나에 등급을 적용하고 데이터베이스에 제품 등급이 저장되어 있는지 확인하십시오. 그런 다음 SQL 쿼리를 작성하여이 학습을 기반으로 모든 제품을 업데이트하십시오. 테스트를 위해 실제 데이터베이스의 덤프를 사용하십시오. –

+1

시도해보기 : https://wordpress.org/plugins/product-import-export-for-woo –

답변

1

등급 (백엔드 또는 관리자 패널에서 등급 지정을위한 분류/속성을 추가해야 함) "등급"을 추가 했으므로 slugpa_rating이 될 것입니다.
속성을 추가 한 후에 용어/값을 추가해야하는 경우 5.0, 4.5를 추가하면 슬러그가 각각 5-04-5이됩니다.

이제 활성 어린이 테마 (또는 테마)의 function.php 파일에 아래 기능을 복사하여 복사하십시오. 또는 모든 플러그인 PHP 파일에서. 사이트를 한 번만 실행 한 후 아래 코드을 삭제하십시오.

add_action('wp', 'wh_addRatingtoProduct'); 
function wh_addRatingtoProduct() { 

    $args = ['post_type' => 'post', 'posts_per_page' => -1]; 
    $loop = new WP_Query($args); 

    if (!empty($loop->posts)): 
     $attribute_name = 'pa_rating'; //slug of the attribute(taxonomy) with prefix 'pa_' 
     foreach ($loop->posts as $post) : 
      $content = $post->post_content; //getting product content 
      $product_id = $post->ID; 
      //for 5 star 
      if (strpos($content, "5.0.png") !== false) { 
       $attribute_value = '5'; //slug of the attribute value (term) 
      } 
      //for 4.7 star 
      elseif (strpos($content, "4.7.png") !== false) { 
       $attribute_value = '4-7'; //slug of the attribute value (term) 
      } 
      //for 4.8 star 
      elseif (strpos($content, "4.8.png") !== false) { 
       $attribute_value = '4-8'; //slug of the attribute value (term) 
      } 
      //... 
      //... 

      //Appending term to the object/product. 
      $term_taxonomy_ids = wp_set_object_terms($product_id, $attribute_value, $attribute_name, true); 
      $data = [ 
       $attribute_name => [ 
        'name' => $attribute_name, 
        'value' => '', 
        'is_visible' => '1', 
        'is_variation' => '0', 
        'is_taxonomy' => '1' 
       ] 
      ]; 
      //getting the Post Meta 
      $_product_attributes = get_post_meta($product_id, '_product_attributes', TRUE); 
      //Updating the Post Meta 
      update_post_meta($product_id, '_product_attributes', array_merge($_product_attributes, $data)); 
     endforeach; 
    endif; 
} 

는 속성 값의 원하는 슬러그와 모든 $attribute_value 바꾸기. 이렇게하기 전에 데이터베이스 백업을 수행하는 것이 좋습니다.

코드가 테스트되었으며 작동합니다.

참고 :이 도움이 Add Attribute to WooCommerce Product Programmatically

희망! 여기

+0

죄송합니다.하지만이 모든 것을 내 사이트에 추가하는 방법을 모르겠다. 코딩을 모른다. . 너는 나에게 배운 사람이 아니라, 이렇게하는 법을 설명해 주겠니? –

+0

플러그인을 사용하여 제품 등급별로 필터링 하시겠습니까? 그게 더 중요하기 때문에, 또한 가능한 경우 귀하의 웹 사이트 URL을 공유 할 수 있습니까? –

+0

WooCommerce Layerd Nav 위젯을 사용 중입니다. [link] (http://saletrons.com/store/) –

1

WP 기능을 사용하여 방법 :

$products = get_posts(array(
    'posts_per_page' => -1,  
    'post_type'  => 'product',   
)); 

foreach ($products as $product) { 

    $excerpt = $product->post_excerpt; 
    $rating = false; 

    if (preg_match("/2-5\.jpg/", $excerpt)) { 
     $rating = 2; 
    } else if (preg_match("/4-5\.jpg/", $excerpt)) { 
     $rating = 4; 
    } else if (other cases) ... 

    if (! $rating) continue; 

    $attributes = DONT_KNOW; // here you have to look which data format you must provide  

    update_post_meta($product->ID, '_product_attributes', $attributes); 

} 

전에 데이터베이스 백업을하는 것을 잊지 마십시오. 다른 제품 속성을 덮어 쓸 수도 있습니다. 당신은 그것을 위해 올바른 형식을 선택해야합니다.

+0

알아,하지만 그의 질문에 그는이 속성에 대해 이야기하고 있습니다. 어쩌면 그는'_wc_average_rating'을 사용하고 싶지 않을 수도 있습니다. 나는 모른다. 방금 WP 기능으로 길을 보여주고 싶었습니다. –

+0

예 속성에 대해 이야기하고 있습니다. [내 사이트] (http://saletrons.com/store/)에서 볼 수 있습니다. –

+0

미안 해요 @AndyTschiersch 나는이 질문에 대해 오해했습니다. –

관련 문제