バリエーションのあるWooCommerce製品属性を追加する方法:2つの方法

公開: 2021-05-25

さまざまなバリエーションの商品属性を作成しますか? あなたは正しい場所に来ました。 このガイドでは、 WooCommerceの商品属性にバリエーションを追加する方法を紹介します。

WooCommerceの属性とは何ですか?

WooCommerceでは、属性を介して商品に情報を追加できます。 これらの属性は製品によって異なります。 たとえば、衣料品の一般的な属性はサイズと色ですが、ラップトップの場合は画面サイズ、RAM、ストレージ容量などです。

属性の興味深い点は、それらがグローバルであるということです。 それらを各製品に適用する代わりに、それらを作成して別の製品に追加するだけです。

属性は次の場合に不可欠です。

  • 可変製品:可変製品を作成する前に、それらの属性を定義する必要があります。 これにより、製品のバリエーションを追加できます。
  • 製品のフィルタリング:フィルタリングの一般的な方法は、属性に基づいています。 たとえば、ユーザーが15インチ画面のラップトップを探している場合があります。

さらに、デフォルトの製品属性を作成することもできます。 詳細については、この完全ガイドをご覧ください。

属性についての理解が深まったので、WooCommerceのバリエーションを使用して製品属性を追加する方法を見てみましょう。

バリエーションのあるWooCommerce製品属性を追加する方法

WooCommerceのバリエーションで商品属性を追加する主な方法は2つあります。

  1. WooCommerceダッシュボードから
  2. プログラムで

両方のオプションを見てみましょう。

1)WooCommerceダッシュボードからバリエーションのある商品属性を作成します

WooCommerceに属性を追加する最も簡単な方法は、[属性]セクションからです。 これを行うには、ダッシュボードで[製品]> [属性]に移動します。 そこで、名前とスラッグを選択し、「属性の追加」ボタンをクリックして、新しい製品属性を作成する必要があります。

バリエーションのあるWooCommerce製品属性を追加する方法

前述のように、属性はグローバルであるため、新しい属性はストア内のすべての製品で使用できます。

product属性を追加した後、特定の製品のバリエーションとなるいくつかの用語を追加する必要があります。

たとえば、属性が画面サイズの場合、さまざまなサイズ(13インチ、15インチ、17インチ)が用語になります。

このようにして、各製品のさまざまな属性を組み合わせて、さまざまなバリエーションを作成できます。 たとえば、赤い13インチのラップトップ、青い15インチのラップトップなどを入手できます。

ご覧のとおり、WooCommerceダッシュボードから属性とバリエーションを追加するのは非常に簡単です。 ただし、多くのバリエーションを作成する必要がある場合は、時間がかかる可能性があります。 バリエーションのある属性を一括で作成し、多数の属性を管理するには、少しコーディングを使用できます。

プログラムでWooCommerceのバリエーションを持つ商品属性を追加する方法を見てみましょう。

2.プログラムでバリエーションのある商品属性を作成する方法

コーディングスキルがある場合は、プログラムで製品属性とそのバリエーションを追加できます。 これは、属性をまとめて追加できるため、属性を作成する時間を節約したい場合に最適なオプションです。

:いくつかのコアファイルを編集するため、開始する前に、次のことをお勧めします。

  • サイトの完全バックアップを作成して、問題が発生した場合に復元できるようにします
  • 子テーマを作成する:これらのプラグインのいずれかをインストールするか、このガイドをチェックして作成できます。 このようにして、テーマを新しいバージョンに更新するときにカスタマイズが失われることはありません。

子テーマのfunctions.phpファイルにカスタムコードを挿入する必要があることに注意してください。

サイトをバックアップして子テーマを作成したら、WordPressダッシュボードで[外観]> [カスタマイズ]に移動し、右側の列でfunctions.phpファイルを探します。 次に、ファイルの最後に次のコードを貼り付けます。

完全なPHPスクリプト

これは完全なスクリプトです。次のセクションでは、スクリプトを分割して、各部分の機能について説明します。

 add_action( 'admin_init'、 'QuadLayers_add_product_attributes');

関数QuadLayers_add_product_attributes(){
    $ atts = array(
        'size' => array( 'XL'、 'Small')、
        'color' => array( 'brown'、 'gray'、 'yellow')、   
    ); 
    foreach($ atts as $ key => $ values){ 
       new add_attribute($ key、$ values); 
    }
}

クラスadd_attribute {   
     / *
     *グローバルなwoocommerce製品属性クラスを登録します。
     *
     * @param str $ nam | 属性の名前
     * @param arr $ vals | バリエーションの配列
     * 
     * /
    パブリック関数__construct($ nam、$ vals){

                $ attrs = array();      
                $ attributes = wc_get_attribute_taxonomies();                          
                    foreach($ attributes as $ key => $ value){
                        array_push($ attrs、$ attributes [$ key]-> attribute_name);                    
                    }              
               if(!in_array($ nam、$ attrs)){            
                    $ args = array(
                        'id' => ''、
                        'slug' => $ nam、
                        'name' => __($ nam、 'woocommerce')、
                        'type' => 'select'、
                        'orderby' => 'menu_order'、
                        'has_archives' => false、
                        'limit' => 1、
                        'is_in_stock' => 1
                    );                    
                   wc_create_attribute($ args);を返します。 
                }               
               $ this-> add_var($ nam、$ vals);
    }

    パブリック関数add_var($ nam、$ vals){  
        $ taxonomy = 'pa _'。$ nam;      
        $ term_slug = sanitize_title($ nam); 
        //用語が存在するかどうかを確認し、存在しない場合は作成します(そして用語IDを取得します)。
        for($ ff = 0; $ ff term_id;
            }
        }
    }
}

このスクリプトは既存の属性を削除せず、新しい属性を追加するだけであることに注意してください。 また、追加しようとしている属性がすでに存在する場合、スクリプトは何もしません。

さらに、この例では、いくつかの属性と用語を追加していることに注意してください。 以下の配列を編集して、独自の属性を作成する必要があります。

 関数QuadLayers_add_product_attributes(){
    $ atts = array(
        'new-attribute' => array( 'aside'、 'beside'、 'long'、 'none'、 'short')、        
    ); 

その後、管理ダッシュボードの[製品]> [属性]に移動します。 すべてがうまくいけば、PHPスクリプトで追加した属性と用語が表示されます。

製品属性のバリエーション

バリエーションが表示されない場合は、ページをリロードするだけで、バリエーションを追加できます。

さらに、これらの属性を使用して、製品エディターページで製品バリエーションを設定することもできます。

属性は、製品バリエーションの設定にも使用できるようになります。

以上です! これで、PHPスクリプトを編集して、独自のWooCommerce製品の属性とバリエーションを追加することができます。 条件付きロジックを適用することで、動的に更新することもできます。

スクリプトはどのように機能しますか?

これまで、バリエーションのあるWooCommerce製品属性をストアに追加するためのスクリプトを示してきました。 それを分解して、それがどのように機能するかをよりよく理解し、カスタマイズできるようにしましょう。

スクリプトの主なセクションは次のとおりです。

フック
add_action( 'admin_init'、 'QuadLayers_add_product_attributes');

関数QuadLayers_add_product_attributes(){
    $ atts = array(
        'size' => array( 'XL'、 'Small')、
        'color' => array( 'brown'、 'gray'、 'yellow')、   
    ); 
    foreach($ atts as $ key => $ values){ 
       new add_attribute($ key、$ values); 
    }
}

admin_init()フックを使用してコードを起動します。 ここでは他のいくつかのフックを使用できますが、この場合、これを使用したスクリプトのパフォーマンスが気に入りました。

フックされた関数では、属性値とバリエーションを単一の多次元配列で定義します。 foreach()ループは、メイン配列の各要素の属性を作成します。

ループ内では、属性はクラスadd_attribute();

クラス

属性の作成とそれにいくつかのバリエーションの追加を担当するOOPクラスを作成しました。 これは、上記のセクションのnew add_attribute()を使用して、クラスがインスタンス化されるたびに1回の実行で行われます。

 クラスadd_attribute {   
    パブリック関数__construct($ nam、$ vals){
                $ attrs = array();      
                $ attributes = wc_get_attribute_taxonomies();                          
                    foreach($ attributes as $ key => $ value){
                        array_push($ attrs、$ attributes [$ key]-> attribute_name);                    
                    }              
               if(!in_array($ nam、$ attrs)){            
                    $ args = array(
                        'id' => ''、
                        'slug' => $ nam、
                        'name' => __($ nam、 'woocommerce')、
                        'type' => 'select'、
                        'orderby' => 'menu_order'、
                        'has_archives' => false、
                        'limit' => 1、
                        'is_in_stock' => 1
                    );                    
                   wc_create_attribute($ args);を返します。 
                }               
               $ this-> add_var($ nam、$ vals);
    }

最初の関数はconstruct()であり、 wc_create_attribute() WooCommerceの組み込み関数を使用して属性を作成し、2番目の関数add_var()も呼び出します。

 パブリック関数add_var($ nam、$ vals){  
        $ taxonomy = 'pa _'。$ nam;      
        $ term_slug = sanitize_title($ nam); 
        //用語が存在するかどうかを確認し、存在しない場合は作成します(そして用語IDを取得します)。
        for($ ff = 0; $ ff <count($ vals); $ ff ++){
            if(!term_exists($ vals [ $ ff ] 、$ taxonomy)){$ term_data = wp_insert_term($ vals [ $ ff ] 、$ taxonomy); $ term_id = $ term_data ['term_id']; } else {$ term_id = get_term_by( 'name'、$ vals [ $ ff ] 、$ taxonomy)-> term_id; }}}

2番目の関数add_var()は、元の配列に含まれているすべてのバリエーションを、関数を介して渡される属性に追加します。

結論

要約すると、製品属性を使用すると、可変製品を作成し、ユーザーが特定の機能に基づいて製品をフィルタリングできるようになります。

このガイドでは、WooCommerceのバリエーションで商品属性を追加する2つの異なる方法を見てきました。

  1. 管理ダッシュボードから
  2. プログラムで

WooCommerceダッシュボードから属性を作成するのは簡単です。 ただし、複数の製品に多くの属性を追加する必要がある場合は、時間がかかる可能性があります。

または、コーディングスキルがある場合は、プログラムで作成できます。 これは、製品属性を一括で追加できる、より高度な方法です。 この投稿で使用したスクリプトは完全にテストされて機能しているので、ベースとして自由にカスタマイズしてください。 ただし、単一のアップロード属性で使用するように設計されていることに注意してください。本番環境に永続的にデプロイすることはお勧めしません。

スクリプトを実行しようとしたときにエラーが発生した場合でも、心配する必要はありません。 これは通常、属性リストページを表示しているために発生します。 スクリプトを更新する正しい方法は、WordPress管理ダッシュボードのパーマリンクページをリロードすることです。

プログラムと管理ダッシュボードの両方からWooCommerce製品を正しく追加する方法の詳細については、このガイドを参照してください。

ストアで商品属性を作成しましたか? どの方法を使用しましたか? 以下のコメントでお知らせください!