Ich habe im Internet gesucht, lesen docs & Zeug, aber ich kann nicht herausfinden, Produkt in Checkout-Seite zu ersetzen.Woocommerce Ersetzen Sie Produkt im Warenkorb Nach Bestellung im Checkout Seite
Zu Ihrer Information, meine Hauptproduktseite befindet sich auf der Startseite und jedes Produkt, das ausgewählt wurde, wird zur Checkout-Seite weitergeleitet. Nun, hier ist ein Problem. Lassen Sie mich erklären ....
Sie sehen, ich habe einen Karussell-Schieberegler in Checkout-Seite, die Benutzer können ändern/ersetzen ihr Produkt (die bereits in ihren Warenkorb hinzugefügt), bevor sie zahlen.
form checkout.php
global $woocommerce;
global $product;
$items = $woocommerce->cart->get_cart();
foreach ($items as &$item){
$id = $item['product_id'];
}
echo $id;
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel" data-interval="false">
<div class="carousel-inner" role="listbox">
<?php
// Querying of product information retrieval
$args = array('post_type' => 'product', 'posts_per_page' => 4, 'orderby' =>'menu_order', 'order' =>'ASC');
$loop = new WP_Query($args);
// Display each retrieved product
while ($loop->have_posts()) :
$loop->the_post();
// WooCommerce global product variable. Refer: https://docs.woothemes.com/document/class-reference/
global $product;
global $woocommerce;
?>
<div class="item <?php if ($product->id == $id) { ?> active <?php } ?>">
<div class="p-big" id="p-custom-color">
<strong><?php the_title(); ?></strong>
</div>
<div class="p-light-black">CANDIDATES</div>
<input type="hidden" id="product" name="productid" value="<?php echo $product->id; ?>">
</div>
<?php
endwhile;
wp_reset_query(); // After the loop ended, quit the custom loop and reset back the main loop
?>
</div>
</div>
<!-- Upon form submission -->
if (isset($_POST['woocommerce_checkout_place_order'])){
global $woocommerce;
$woocommerce->cart->empty_cart(); // Empty the cart
$selectedproduct = $_POST['selectedproductid']; // Get the selected product
do_shortcode('[add_to_cart id="' . $selectedproduct . '"]'); // Insert the selected product in the the cart
return esc_url(wc_get_checkout_url()); // Redirect to Payment Gateway Page
}
<form name="checkout" method="post" class="checkout woocommerce-checkout" action="" enctype="multipart/form-data">
<?php if (sizeof($checkout->checkout_fields) > 0) : ?>
<?php do_action('woocommerce_checkout_before_customer_details'); ?>
<?php do_action('woocommerce_checkout_billing'); ?>
<?php do_action('woocommerce_checkout_after_customer_details'); ?>
<?php endif; ?>
<h3 id="order_review_heading"><?php _e('Your order', 'woocommerce'); ?></h3>
<?php do_action('woocommerce_checkout_before_order_review'); ?>
<div id="order_review" class="woocommerce-checkout-review-order">
<!-- Checkout Review -->
<input type="hidden" id="selectedproduct" name="selectedproductid" value="">
<?php do_action('woocommerce_checkout_order_review'); ?>
</div>
<?php do_action('woocommerce_checkout_after_order_review'); ?>
</form>
Wie Sie im Karussell sehen können, ich <input type="hidden" id="product" name="productid" value="<?php echo $product->id; ?>">
enthalten sind, jedes Produkt-ID zu erhalten und mit meinen jQuery (ich nicht hier zeigen), I Nehmen Sie eine Produkt-ID, die das Produkt derzeit auf der aktiven Folie ist, und füllen Sie es im Formular <input type="hidden" id="selectedproduct" name="selectedproductid" value="">
.
Damit kann ich das Produkt ersetzen, die auf den aktiven Schlitten mit diesem Code mit dem ausgewählten/gewählten Produkt in der Warenkorb gelegt wurden auf der Grundlage (über der Form entfernt): -
<!-- Upon form submission -->
if (isset($_POST['woocommerce_checkout_place_order'])){
global $woocommerce;
$woocommerce->cart->empty_cart(); // Empty the cart
$selectedproduct = $_POST['selectedproductid']; // Get the selected product
do_shortcode('[add_to_cart id="' . $selectedproduct . '"]'); // Insert the selected product in the the cart
return esc_url(wc_get_checkout_url()); // Redirect to Payment Gateway Page
}
Das Problem hier ist, es fehlgeschlagen, das alte Produkt mit dem aktuellen gewählten Produkt zu ersetzen und es nur umleiten, um die Zahlung Gateway-Seite mit dem alten Produkt.
Ich möchte es ersetzen Sie das Produkt mit den neuen ausgewählten bei Auftragserteilung. Ist es möglich? Ich hoffe es ist so, weil ich seit Wochen mit WooCommerce spiele und ich möchte nicht, dass meine Bemühungen nutzlos sind. Helfen Sie mir Jungs .....