2017-06-26 5 views
0

Ich habe versucht, eine Option für Artikel in einem Einkaufswagen hinzuzufügen, damit der Kunde das Produkt umbenennen kann. Dies wird für sie verwendet, um verschiedene Produkte des gleichen Typs zu verfolgen, um an verschiedene Personen gesendet zu werden (macht ein Papierkorbsystem)WooCommerce: Fügen Sie einen Eingang zum Einkaufswagen hinzu und fügen Sie dann die Daten zum Einkaufswagenartikel hinzu

Ich habe den woocommerce_cart_item_name Filter verwendet, um das Eingabefeld zu den Einkaufswagenelementen hinzuzufügen. Ich benutze die Antwort von this link und triggern die wc_update_cart in meinem Javascript, wenn der Benutzer auf die Schaltfläche "ADD" neben dem Eingabefeld klicken wird, aber es scheint überhaupt nicht zu funktionieren.

Gibt es eine andere Möglichkeit, dass ich diese benutzerdefinierten Namen Daten zum entsprechenden Warenkorb Artikel hinzufügen können, nachdem das Produkt hinzugefügt wird? Ich weiß, dass ich es tun kann, indem ich es dem Warenkorb hinzufüge (oder eine Arbeit um das Entfernen des Produkts und das Hinzufügen wieder in diesem neuen Feld. Aber das nicht tun wollen)

Vielen Dank im Voraus für Ihre Hilfe .

Antwort

0

Das Problem gefunden.

Die Schaltfläche „Hinzufügen“, die ich neben dem Eingabefeld hatte, die ich die wc_update_cart wie jQuery(document).trigger('wc_update_cart'); wurde nicht Validierung der Scheck, den ich für den Wert von $_POST['update_cart'] auf der PHP-Seite gestellt hatte ausgelöst wurde mit. Als ich erkannte, dass ich meinen woocommerce_cart_item_name Filter änderte, um nur das Eingabefeld hinzuzufügen und die Update Basket Taste zu verwenden, um den Namen zu aktualisieren. So änderte meinen Code:

<?php 
    add_filter('woocommerce_cart_item_name','custom_naming_front',10,3); 

    function custom_naming_front($product_title,$cart_item,$cart_item_key){ 
     if(isset($cart_item['custom_name']) && !empty($cart_item['custom_name'])){ 
      $product_title=$cart_item['custom_name']; 
     } 
     $product_title .= '<div class="custom-name-form-wrapper" id="custom-name'.$cart_item_key.'"> 
            <input type="text" name="cart['.$cart_item_key.'][custom_name]" id="custom_name_text'.$cart_item_key.'" value="" placeholder="enter the name you want to give this product" /> 
           </div> 
          </div>'; 

     return $product_title; 

    } 
?> 

und die Funktion Update zu zeigen, der Name wie folgt aussieht:

<?php 

    function custom_name_save_to_cart(){ 
     if ((! empty($_POST['apply_coupon']) || ! empty($_POST['update_cart']) || ! empty($_POST['proceed'])) && isset($_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'woocommerce-cart')) { 
       $cart_totals = isset($_POST['cart']) ? $_POST['cart'] : ''; 
      if (! WC()->cart->is_empty()) { 
       foreach (WC()->cart->cart_contents as $cart_item_key => $values) { 
        if (! isset($cart_totals[ $cart_item_key ]) || ! isset($cart_totals[ $cart_item_key ]['custom_name'])) { 
         continue; 
        } 
        WC()->cart->cart_contents[ $cart_item_key ]['custom_name'] = $cart_totals[ $cart_item_key ]['custom_name']; 

       } 
      } 

     } 

    } 
    add_action('wp_loaded', 'custom_name_save_to_cart', 25); 
?> 
Verwandte Themen