Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]woocommerce - Zmiana zdjęć produktu w koszyku na własne
Johnas
post 16.12.2021, 13:26:47
Post #1





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


Witam, mam zdjęcie produktu, które podczas zamawiania odpowiednio przycinam. Chciałbym w koszyku oraz w mailu zmienić zdjęcie z oryginału na te przycięte. Ma ktoś pomysł jak to zrobić?


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
aras785
post 17.12.2021, 13:19:04
Post #2





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


Cześć,

jeśli jest to indywidualne zdjęcie per zamówienie to zrób po prostu dodatkowe pole w koszyku i następnie przekazać to zdjęcie do zamówienia:
https://stackoverflow.com/questions/1962072...ld-to-cart-item

Wiadomo trzeba następnie w szablonach obsłużyć nowe pole ale raczej to nie problem smile.gif W razie czego podrzuć kod to pomogę smile.gif
Go to the top of the page
+Quote Post
Johnas
post 18.12.2021, 13:21:41
Post #3





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


o to mi chodziło aczkolwiek nie aktualizuje mi zdjęcia. Mój kod:
  1. add_action('wp_ajax_add_product_to_cart_checkout', 'add_product_to_cart_checkout');
  2. add_action('wp_ajax_nopriv_add_product_to_cart_checkout', 'add_product_to_cart_checkout');
  3. function add_product_to_cart_checkout()
  4. {
  5. global $order, $woocommerce, $post;
  6. $product_id = intval($_POST['productid']);
  7. $price = floatval($_POST['price']);
  8. $ebike_ids = array(17386, 17385, 17382, 17378, 17375, 17372, 17370, 17369, 17364, 16132, 16130, 4561, 4550, 3490, 2376);
  9. $insurance_ids = array(16600, 16653, 16654, 16655, 16659, 16660);
  10. $found = false;
  11. $ebike_quantity = 1;
  12. $new_image = intval($_POST['image']);
  13.  
  14. if (isset($_POST['productid']) && isset($_POST['price']) && !WC()->cart->is_empty()) {
  15. // Loop through cart items
  16. foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
  17. // Delete all preexisting insurance products
  18. if (in_array($cart_item['product_id'], $insurance_ids)) {
  19. WC()->cart->remove_cart_item($cart_item_key);
  20. }
  21.  
  22. // Get ebikes total quantity
  23. if (in_array($cart_item['product_id'], $ebike_ids)) {
  24. $ebike_quantity += $cart_item['quantity'];
  25. }
  26. }
  27.  
  28. // If command is not to remove add insurance product with price as custom cart item data
  29. if ($price >= 0 && $cart_item['insurance_price'] > 0) {
  30. WC()->cart->add_to_cart($product_id, $ebike_quantity, 0, array(), array('insurance_price' => $price, "new_photo" => $new_image));
  31. //$order = wc_get_order( $order->id );
  32. $product_cart_id = WC()->cart->generate_cart_id( $product_id );
  33. $items = $woocommerce->cart->get_cart();
  34. //$order = new WC_Order($product_id);
  35.  
  36. foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
  37. $product = $cart_item['data'];
  38. print_r($product);
  39. }
  40.  
  41. //print_r($items);
  42. echo "dodano do koszyka>> ".$product_cart_id;
  43. }
  44. die();
  45. } else {
  46.  
  47. WC()->cart->add_to_cart($product_id, $ebike_quantity, 0, array(), array('insurance_price' => $price, "new_photo" => $new_image));
  48. $product_cart_id = WC()->cart->generate_cart_id( $product_id );
  49. }
  50. if (!WC()->cart->is_empty()) {
  51. echo "dodano do koszyka ".$product_cart_id;
  52. } else {
  53. echo "lipa";
  54. }
  55. }
  56.  
  57. // Set insurance price from custom cart item data
  58. add_action('woocommerce_before_calculate_totals', 'set_insurance_price');
  59. function set_insurance_price($cart)
  60. {
  61. if (is_admin() && !defined('DOING_AJAX'))
  62. return;
  63.  
  64. foreach ($cart->get_cart() as $cart_item) {
  65. if (isset($cart_item['insurance_price']) && $cart_item['insurance_price'] > 0) {
  66. $cart_item['data']->set_price($cart_item['insurance_price']);
  67. }
  68. }
  69. }
  70.  
  71.  
  72. add_action( 'woocommerce_get_cart_item_from_session', 'cart_item_from_session' , 99, 2 );
  73.  
  74. function cart_item_from_session( $data, $values ) {
  75. $data[ 'new_photo' ] = isset( $values[ 'new_photo' ] ) ? $values[ 'new_photo' ] : '';
  76. return $data;
  77. }
  78.  
  79. add_filter( 'woocommerce_add_order_item_meta', 'add_item_meta_order', 10, 3 );
  80.  
  81. function add_item_meta_order( $item_id, $values ) {
  82. if ( !is_null( $values[ 'new_photo' ] ) ) {
  83. wc_add_order_item_meta( $item_id, 'new_photo', $values[ 'new_photo' ] );
  84. }
  85. }


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 12:27