私は自分自身でこの問題に直面し、WooCommerce が頻繁に変更されることを考えると、いくつかの追加フィールドをコードで埋めるのをためらっていました。あなたのニーズに合うかもしれないし、合わないかもしれない最小限のコードの回避策を見つけました。基本的に、通常の投稿でバリエーションのカスタム フィールドを「プロキシ」し、その投稿 ID を製品バリエーションの SKU フィールドに入れることでそれらのフィールドにアクセスします。
投稿カテゴリ「カスタムフィールド」を設定することから始めました-同様の名前の製品へのリダイレクトを介して非表示にします。投稿カテゴリのカスタム フィールドを設定しました: custom-fields。次に、「widget x red」などの投稿を追加し、赤のバリエーションのカスタム フィールドを入力しました。投稿を保存したら、商品バリエーションの SKU フィールドに投稿 ID を追加しました。CSS のカスタマイズ SKU フィールドを非表示にし、子テーマ woocommerce/single-product.php を編集して、カスタム フィールドを取得するために少し PHP を追加しました。
$product = wc_get_product($post->ID);
$pv = new WC_Product_Variable($product->get_id());
$variations = $pv->get_available_variations();
$custom_fields=[];
if(!empty($variations)){
foreach($variations as $variation){
$vid = $variation['variation_id'];
$sku = $variation['sku'];
if($vid && $sku){
$fields = get_fields($sku);
if($fields){
$custom_fields[$vid] = $fields;
}
}
}
}
その後、カスタム フィールドにバリエーション ID でインデックスを付けました