Zurück zum Blog Onlineshop

WooCommerce: Eigene Produktfelder hinzufügen

16. Dezember 2025 Dominik Baurhenn 7 Min. Lesezeit
WooCommerce: Eigene Produktfelder hinzufügen

Manchmal braucht man zusätzliche Felder für Produkte. Hier zeige ich, wie du eigene Felder im WooCommerce-Backend hinzufügst und im Frontend ausgibst.

1. Felder im Backend hinzufügen

// Tab "Allgemein" erweitern
add_action('woocommerce_product_options_general_product_data', 'add_custom_fields');
function add_custom_fields() {
    echo '<div class="options_group">';
    
    // Textfeld
    woocommerce_wp_text_input(array(
        'id' => '_lieferzeit',
        'label' => 'Lieferzeit',
        'placeholder' => 'z.B. 2-3 Werktage',
        'desc_tip' => true,
        'description' => 'Angezeigte Lieferzeit für dieses Produkt'
    ));
    
    // Selectbox
    woocommerce_wp_select(array(
        'id' => '_herkunftsland',
        'label' => 'Herkunftsland',
        'options' => array(
            '' => 'Bitte wählen',
            'de' => 'Deutschland',
            'at' => 'Österreich',
            'ch' => 'Schweiz',
            'eu' => 'EU'
        )
    ));
    
    // Checkbox
    woocommerce_wp_checkbox(array(
        'id' => '_is_handmade',
        'label' => 'Handgemacht',
        'description' => 'Dieses Produkt ist handgefertigt'
    ));
    
    echo '</div>';
}

2. Felder speichern

add_action('woocommerce_process_product_meta', 'save_custom_fields');
function save_custom_fields($post_id) {
    // Textfeld
    $lieferzeit = isset($_POST['_lieferzeit']) ? 
        sanitize_text_field($_POST['_lieferzeit']) : '';
    update_post_meta($post_id, '_lieferzeit', $lieferzeit);
    
    // Select
    $herkunft = isset($_POST['_herkunftsland']) ? 
        sanitize_text_field($_POST['_herkunftsland']) : '';
    update_post_meta($post_id, '_herkunftsland', $herkunft);
    
    // Checkbox
    $handmade = isset($_POST['_is_handmade']) ? 'yes' : 'no';
    update_post_meta($post_id, '_is_handmade', $handmade);
}

3. Im Frontend anzeigen

add_action('woocommerce_single_product_summary', 'display_custom_fields', 25);
function display_custom_fields() {
    global $product;
    
    $lieferzeit = get_post_meta($product->get_id(), '_lieferzeit', true);
    $herkunft = get_post_meta($product->get_id(), '_herkunftsland', true);
    $handmade = get_post_meta($product->get_id(), '_is_handmade', true);
    
    echo '<div class="custom-product-fields">';
    
    if ($lieferzeit) {
        echo '<p><strong>Lieferzeit:</strong> ' . esc_html($lieferzeit) . '</p>';
    }
    
    if ($herkunft) {
        $laender = array('de' => 'Deutschland', 'at' => 'Österreich', 
                         'ch' => 'Schweiz', 'eu' => 'EU');
        echo '<p><strong>Herkunft:</strong> ' . $laender[$herkunft] . '</p>';
    }
    
    if ($handmade === 'yes') {
        echo '<p class="handmade-badge">✋ Handgemacht</p>';
    }
    
    echo '</div>';
}

4. In Bestellung anzeigen

add_filter('woocommerce_order_item_get_formatted_meta_data', 'show_in_order', 10, 2);
function show_in_order($formatted_meta, $item) {
    $product_id = $item->get_product_id();
    $lieferzeit = get_post_meta($product_id, '_lieferzeit', true);
    
    if ($lieferzeit) {
        $formatted_meta['lieferzeit'] = (object) array(
            'key' => 'lieferzeit',
            'display_key' => 'Lieferzeit',
            'value' => $lieferzeit,
            'display_value' => $lieferzeit
        );
    }
    
    return $formatted_meta;
}
Custom Fields erweitern WooCommerce flexibel – ohne schwere Plugins!
Teilen: