WooCommerceでは、バリエーションのある製品を使用しています。Woocommerceカートオブジェクトのバリエーションのカスタムフィールドを選択した値を追加
:は、バックエンドでは、私は、変数の各製品バリエーションでカスタム価格(大人/子供)の設定で正常に2カスタムフィールド(2つのカスタムフィールドが下部に表示されます)を追加しました
2つの価格は、同じ日付属性と数量にリンクされているため、同じバリエーションに表示する必要があります。
問題
私はカートに追加]ボタンを上「クリック」、バックエンドでの価格を定義するフロントエンド上の数量セレクターでそれらを示しているが、私は同じで、カートに追加することはできません。ユーザーがカートに追加ボタンをクリックすると、適切な数の大人がカートに追加されますが、子供を追加する方法もわかりません...
実際に私は同じバリエーションに対応するが、子供の価格と数量、および「価格:子供」のような属性に対応するカートの別のアイテム。
私は同じように、add_to_cart機能を使用して考えています:= $quantity
で、適切な$product_id
、$variation_id
と$variation
で
add_to_cart($product_id , $quantity , $variation_id, $variation , array(__('Price:','ah')=>__('Children','ah)));
子供入力の数を、私は本当に知らない、いつどこでそれを適切に含めるためにフックする。私が試した(と動作しません)何
:
- 私はadd_to_cart自体にフックしようとしたが、唯一のエラーで終了再帰呼び出しを作成することに成功しました。
- 私はwoocommerce_before_calculate_totalsにもフックしようとしましたが、価格を変更するのに適しているようですが、新しい製品を追加して数量を設定するのは「遅すぎます」と思われます。
大人と子供の量の表示と価格
製品ページは、各数量セレクタで、2つの価格を表示するように変更され、また、動的に合計を算出し、jQueryのスクリプトです:
総の自動計算とフロントエンド、私のコードは:
function ah_activity_product_price_display() {
global $product;
$stock = $product->get_total_stock();
$pricepolicy = get_post_meta($product->id, '_ah_pricing', true);
if(is_activity()) {
$price_list = array();
if ($pricepolicy == 'multiple') {
$variations=$product->get_available_variations();
foreach ($variations as $variation) {
$variation_id = $variation['variation_id'] ;
$start = $variation['attributes']['attribute_date'];
$price_list[$start]['adult_price'] = get_post_meta($variation_id, '_adult_price', true);
$price_list[$start]['children_price'] = get_post_meta($variation_id, '_children_price', true);
}
//var_dump($price_list,json_encode($price_list));
?>
<div class="multiple">
<p class="clear">
<div class="quantity">
<input class="minus" type="button" value="-">
<input type="number" step="1" min="1" max="<?php echo esc_attr(0 < $stock ? $stock : ''); ?>" name="nb_adulte" value="1" title="<?php echo esc_attr_x('Adult number', 'Product quantity input tooltip', 'ah'); ?>" class="input-text qty text" size="4" pattern="" inputmode="" />
<input class="plus" type="button" value="+">
</div> <?php _e('Adult x ','ah'); ?> <span class="prix-adulte"><?php esc_html($adult_price); ?></span> €
</p>
<p class="clear">
<div class="quantity">
<input class="minus" type="button" value="-">
<input type="number" step="1" min="0" max="<?php echo esc_attr(0 < $stock ? $stock : ''); ?>" name="nb_enfant" value="0" title="<?php echo esc_attr_x('Children number', 'Product quantity input tooltip', 'ah'); ?>" class="input-text qty text" size="4" pattern="" inputmode="" />
<input class="plus" type="button" value="+">
</div> <?php _e('Children (under 18) x ','ah'); ?> <span class="prix-enfant"><?php echo esc_html($children_price); ?></span> €
</p>
</div>
<?php
}
echo '<input type="hidden" id="pricelist" name="pricelist" value=\''.json_encode($price_list).'\'>';
} else {
woocommerce_get_price_html();
}
}
感謝。確かに、私がしたいことを十分に説明し、同時に最小限に抑えることは容易ではありません。私は細部が不足していることを恐れています。人々はそれが単調な言い回しを知らない人の基本的な質問だと思っています...とにかく、私は必要なものだけで質問を書き直そうとします。 –
@LoicTheAztecを書式化して質問をクリアしてくれてありがとう。それまでの間、私はAjaxコールバック(下記の回答を参照)を使用して、私がやりたいことをほぼ達成しました。次のトピックを参考にしてください:https://stackoverflow.com/questions/27270880/add-a-variation-to-カートに入れる - ajax-woocommerce-api?noredirect = 1&lq = 1 2個の商品を適切な数量で追加できますが、ajaxでカートに追加することで価格を直接設定することはできません。私はここにコードとソリューションを掲載しましたが、私の新しい質問のために、新しいトピックを開く方が良いでしょうか、これに従うのが良いでしょうか? –
私はあなたの答えをコメントしました。方法は新しい質問のための新しいトピック(新しい質問)を作ることです...最後のものは、あなたのコードのコメントは、そのフォーラムに英語でなければなりません... – LoicTheAztec