Direkt zum Hauptinhalt

Snippet - Artikel als neue Position im Warenkorb mit Textfeld aus Acowebs Product Addons

Beschreibung:

Es gibt Artikel die mehrmal in den Warenkorb gelegt werden sollen, aber nicht gestapelt sondern als einzelne Position immer aufgelistet werden sollen, da sie Custom fields beinhalten.
Hier aus dem Plugin Acowebs Product Addons, für Benutzerdefinierte Felder.

Herausfinden des Feldnamens:

Die Artikelseite Aufrufen. Rechtklcik in das Textfeld und auf untersuchen klicken

grafik.png

grafik.png

Hier in type="url" name="url_3112976778"

url_3112976778 ist der Wert der uns später interessiert.

grafik.png

Snippet

In dem Beispiel haben wir url_3112976778 gelassen damit man weiß wo es rein muss

Diese beiden Werte in der POST setzen

$cart_item_data['addon-domain'] = sanitize_text_field($_POST['url_3112976778']);
$cart_item_data['unique_key'] = md5($_POST['url_3112976778'] . microtime());

add_filter('woocommerce_add_cart_item_data', 'force_unique_addon_domain_items', 10, 2);
function force_unique_addon_domain_items($cart_item_data, $product_id) {
    if (!empty($_POST['url_3112976778'])) {
        $cart_item_data['addon-domain'] = sanitize_text_field($_POST['url_3112976778']);
        $cart_item_data['unique_key'] = md5($_POST['url_3112976778'] . microtime());
    }
    return $cart_item_data;
}


/*add_filter('woocommerce_get_item_data', 'show_domain_in_cart', 10, 2);
function show_domain_in_cart($item_data, $cart_item) {
    if (isset($cart_item['addon-domain'])) {
        $item_data[] = array(
            'key' => 'Domain',
            'value' => esc_html($cart_item['addon-domain']),
        );
    }
    return $item_data;
}*/

add_action('woocommerce_add_order_item_meta', 'store_domain_in_order_meta', 10, 3);
function store_domain_in_order_meta($item_id, $values, $cart_item_key) {
    if (isset($values['addon-domain'])) {
      wc_add_order_item_meta($item_id, 'Domain', $values['addon-domain']);
    }
}

Ergebnis:

grafik.png