Support » WooCommerce » Benutzerdefiniertes Produktfeld

  • patricksd

    (@patricksd)


    Ich habe in einem Shop mit Woocommerce ein benutzerdefiniertes Bemerkungsfeld eingebaut. Das wird dann auch im Warenkorb und im Checkout (in der Übersicht) angezeigt. Wie kann ich das nun beim Bestellvorgang speichern. Welchen Hook muss ich dafür nehmen?

    Vielen Dank
    Patrick

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Moderator Michi91

    (@michi91)

    Wie hast du das Bemerkungsfeld eingebaut? Offenbar ist das Feld ja an ein Produkt gebunden? So würde ich entsprechend die Hooks nehmen, die gecalled werden, wenn man ein Produkt zum Warenkrob hinzufügt.

    Oder handelt es sich um ein Feld das Allgemein zur Bestellung hinzu kommt?

    Thread-Starter patricksd

    (@patricksd)

    Das Bemerkungsfeld wird zum Warenkorb hinzugefügt. In den Produktdetails wird dann ein zusätzliches Bemerkungsfeld angezeigt. Dieses Feld soll dann zu einer Bestellung hinzukommen. Ich habe mittlerweile eine Lösung gefunden: https://aovup.com/woocommerce/add-notes-to-product/. Schön wäre jetzt noch, wenn man im Warenkorb auch nochmal die Bemerkung bearbeiten könnte :-).

    Moderator Michi91

    (@michi91)

    // Display the custom note field in the cart
    function display_custom_note_field_in_cart() {
        echo '<tr class="custom-order-note">
            <th>' . __('Order Note', 'woocommerce') . '</th>
            <td><textarea name="custom_order_note" class="input-text"></textarea></td>
        </tr>';
    }
    add_action('woocommerce_cart_totals_before_order_total', 'display_custom_note_field_in_cart');
    
    // Display the saved custom note value in the cart
    function display_saved_custom_note_in_cart() {
        if (WC()->session->__isset('custom_order_note')) {
            echo '<tr class="custom-order-note">
                <th>' . __('Order Note', 'woocommerce') . '</th>
                <td>' . esc_html(WC()->session->get('custom_order_note')) . '</td>
            </tr>';
        }
    }
    add_action('woocommerce_cart_totals_after_order_total', 'display_saved_custom_note_in_cart');
    
    // Display the custom note field in the checkout
    function display_custom_note_field_in_checkout() {
        echo '<div id="custom-order-note-field" class="woocommerce-additional-fields">
            <h3>' . __('Order Note', 'woocommerce') . '</h3>
            <textarea name="custom_order_note" class="input-text"></textarea>
        </div>';
    }
    add_action('woocommerce_before_order_notes', 'display_custom_note_field_in_checkout');
    
    // Save the custom note field value to the session
    function save_custom_note_field_to_session() {
        if (isset($_POST['custom_order_note'])) {
            WC()->session->set('custom_order_note', sanitize_text_field($_POST['custom_order_note']));
        }
    }
    add_action('woocommerce_cart_calculate_fees', 'save_custom_note_field_to_session');
    
    // Save the custom note field as an order note
    function save_custom_note_field_to_order($order_id) {
        if (WC()->session->__isset('custom_order_note')) {
            $order = wc_get_order($order_id);
            $note = sanitize_text_field(WC()->session->get('custom_order_note'));
            $order->add_order_note($note);
        }
    }
    add_action('woocommerce_checkout_create_order', 'save_custom_note_field_to_order');
    

    Vielleicht hilft dir dieser Code. Kommt vom ChatGPT, sieht aber ganz brauchbar aus auf den ersten Blick

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Das Thema „Benutzerdefiniertes Produktfeld“ ist für neue Antworten geschlossen.