2

Advanced Custom Fields (ACF)と WooCommerceというプラグインを使用しています。WooCommerce の商品バリエーション用にテキストと画像のフィールドを作成したいと考えています。ACF でフィールドを作成し、それらを に割り当てました"Post Type" > "product_variation"

ここに画像の説明を入力

しかし、これらのフィールドが の下に表示されないためですproduct > Variations。検索したところ、これらのフィールドに対応するカスタム コードを作成する必要があるようです。私は問題を検索しようとしましたが、私が見つけた提案とチュートリアルのほとんどは、コードを介してカスタムフィールドを作成し、ACF を使用しないことに関するものであり、フィールドは ACF を使用する必要があるため、Visual Composer を使用してこれらをプルしているためです。フロントエンドの ACF フィールド。

ここに画像の説明を入力

4

3 に答える 3

2

私は自分自身でこの問題に直面し、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 でインデックスを付けました

于 2019-10-22T03:42:10.663 に答える