こんにちは、
誰かが私が解決策を見つけるのを手伝ってください。
私のクライアントは卸売業を営んでおり、woocommerceチェックアウト機能は必要ありません。彼はカートまでのwoocommerce機能を必要としていますが、チェックアウトの代わりに「注文する」ボタンが必要です。
これで、すべてが正常に機能し、注文が正しく行われ、注文がデータベースに保存され、管理者にメールで送信されますが、問題はバリエーションも保存したいということです。私の質問は選択したバリエーションを取得する方法 (もしあれば)その製品のfunctions.php内の製品で、すでにカートに入っていますか?
どんなヒントでも大歓迎です。
私があなたの質問を正しく理解したことを願っています。
カートに入っている商品のバリエーションの詳細(利用可能な場合)を取得したいと言っています。
カートにはたくさんのアイテムが入っています。アイテムをループして、各アイテムのバリエーションの詳細を取得できます。
カートアイテムは連想配列であり、製品IDは$item['product_id']
に、バリエーションIDは$item['variation_id']
にあります。
次の関数を使用し、バリエーションIDを渡して、バリエーションの詳細を取得してください。
function get_variation_data_from_variation_id( $item_id ) {
$_product = new WC_Product_Variation( $item_id );
$variation_data = $_product->get_variation_attributes();
$variation_detail = woocommerce_get_formatted_variation( $variation_data, true ); // this will give all variation detail in one line
// $variation_detail = woocommerce_get_formatted_variation( $variation_data, false); // this will give all variation detail one by one
return $variation_detail; // $variation_detail will return string containing variation detail which can be used to print on website
// return $variation_data; // $variation_data will return only the data which can be used to store variation data
}
それでは、この関数の使い方を見てみましょう。
$item_id = ( !empty( $cart_item['variation_id'] ) ) ? $cart_item['variation_id'] : '';
if ( !empty( $item_id ) ) {
$variations = get_variation_data_from_variation_id( $item_id );
}
お役に立てば幸いです。
これがお役に立てば幸いです...
function woocommerce_variable_add_to_carts() {
global $product, $post;
$variations = $product->get_available_variations();
foreach ($variations as $key => $value) {
?>
<form action="<?php echo esc_url($product->add_to_cart_url()); ?>"method="post" enctype='multipart/form-data'>
<input type="hidden" name="variation_id" value="<?php echo $value['variation_id'] ?>" />
<input type="hidden" name="product_id" value="<?php echo esc_attr($post->ID); ?>" />
<?php
if (!empty($value['attributes'])) {
foreach ($value['attributes'] as $attr_key => $attr_value) {
?>
<input type="hidden" name="<?php echo $attr_key ?>" value="<?php echo $attr_value ?>">
<?php
}
}
?>
<?php echo implode('/', $value['attributes']); ?>
<?php echo $value['price_html']; ?>
</
<button type="submit" class="single_add_to_cart_button button alt"><?php echo apply_filters('single_add_to_cart_text', __('Add to cart', 'woocommerce'), $product->product_type); ?></button>
</form>
<?php
}
}