web-dev-qa-db-ja.com

Woocommerceカスタムリンクからバリエーション商品をカートに追加

リンクを通じてバリエーション商品をカートに追加しようとしています。クエリ文字列でvariation_idを設定しています。私が言うことができる限り、私はデータをデフォルトバリエーション製品フォームがするのと全く同じ方法で送っている。

これが私の単一製品ページの中のコードです:

<a href="<?php echo esc_url( $product->add_to_cart_url() ); ?>&variation_id=262" class="rounded-rect-button add-to-cart">Add to Cart</a>

逆に、単純な製品はうまく機能します。私は管理者で私の製品のバリエーションに価格を設定しました。それがデータを送信するほど単純ではない理由はよくわかりません。任意の助けは大歓迎です。

15
ezekielDFM

これを考え出した。可変商品をカートに追加するために必要ないくつかのパラメータがありませんでした。欠落しているパラメーターは、variation_idvariation_idが参照している属性タイプです。バリエーションIDは、admin> woocomerce> productsと、作成したバリエーションの横にあるバリエーションタブの下にあります。

属性paramは、接頭部attribute_と、それからサニタイズされた属性名から形成されます。たとえば、私の属性はStock Colorsと呼ばれるので、私の属性タイプparamはattribute_stock-colorsです。私が言うことができるものから、あなたはちょうどattribute_stock-colors=1をセットします、それはカートに追加する方法がちょうどそれが存在するかどうか確かめるためにチェックするので。

これは、ストックカラーのバリエーションID 261の商品をカートに追加するリンクの簡単な例です。

<a href="<?php echo esc_url( $product->add_to_cart_url() ); ?>&variation_id=261&attribute_stock-colors=1">Add to Cart</a>

実際の状況でこれを使用するには、ドロップダウンまたはそのようなものでユーザーが選んだオプションから属性タイプとバリエーションIDを動的に設定する必要があります(すべての製品が同じバリエーションを持たない限り、基本的にそれは単純な製品になります) ).

9
ezekielDFM

私は現在woocommerce v2.1.12ショップで働いています、そしてそれは彼らがそのふるまいを変えたようです。

カートに商品を追加するための私のajax URLは次のようになります。

?add-to-cart=[PRODUCT-ID]&variation_id=[VARIATION-ID]&attribute_[ATTRIBUTE-NAME]=[ATTRIBUTE-SLUG]&attribute_[ATTRIBUTE-NAME]=[ATTRIBUTE-SLUG]

例:

http://example.com/store/category/product/?add-to-cart=239&variation_id=240&attribute_pa_size=48-2&attribute_pa_color=gold

これにより、特定の商品がカートに追加され、カートにバリエーション属性も設定されます。 &quantity=[VALUE]を追加するだけで数量を設定することもできます。

これらの値はすべて送信フォーム/選択フィールド内に設定されるので、結局これは便利です。あなたはそれらを調べる必要があります..

10
honk31