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!