2017-02-06 12 views
-1

私のWooCommerce製品ストアの評価でフィルターを追加したいのですが、私の各製品の評価用の画像を短い説明で使用しています。約180製品。そして私は、私の店で評価することによってフィルターに掛けるオプションを追加することを忘れていました。Wordpressの180 WooCommerce製品に属性を与えるにはどうすればいいですか

私のすべての製品に評価用の属性を1つずつ追加することはできますが、それには時間がかかります。

すぐに仕事を終えるためにできることはありますか? 私の短い記述の私のイメージは、4.7.png、4.8.pngのような名前を持っています。これらのイメージ名を取得して属性に自動的に追加することは可能ですか?

Link

感謝。

+2

可能な方法:いずれかの製品に評価を適用し、データベースに格納されている方法を確認します。次に、この学習に基づいてすべての製品を更新するSQLクエリを作成します。テストのために実際のデータベースのダンプを使用してください。 –

+1

試してみてください:https://wordpress.org/plugins/product-import-export-for-woo –

答えて

1

評価のための分類/属性を追加する必要があります(バックエンドまたは管理パネルから)。評価が追加されたとしましょう。slugpa_ratingになります。
属性を追加した後に用語/値を追加する必要がある場合、5.0,1.5を追加したとしましょう。スラッグはそれぞれ5-04-5になります。

アクティブな子テーマ(またはテーマ)のfunction.phpファイルに以下の機能をコピーしてコピーします。また、任意のプラグインのPHPファイルにもあります。 あなたのサイトを1回だけ実行し、以下のコードを削除してください。

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

は、この情報がお役に立てば幸い! WPの機能を使用して、ここで

+0

申し訳ありませんが、私はどのように私のサイトにこれらのものを追加するかわかりません、私はコーディングを知らない。教えられていない男のように、私にこのことをどうやって説明することができますか? –

+0

あなたはプラグインを使用して商品の評価でフィルタリングしますか?それは知ることがより重要であり、可能であればウェブサイトのURLを共有できるからです。 –

+0

私はWooCommerce Layerd Navウィジェットを使用しています。[リンク](http://saletrons.com/store/) –

1

方法:

$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私は質問を誤解しました。 –

関連する問題