Sari la conținut
WEBLURE

WooCommerce · Personalizare produse

WooCommerce: adăugarea textului de gravat în pagina produsului

Clientul scrie numele de gravat înainte să cumpere, iar atelierul îl găsește în comandă. Se poate face cu extensia oficială sau cu un câmp propriu.

  • Câmp text pe produs
  • Limită de caractere
  • Text în coș și comandă
  • Extensia Product Add-Ons
  • Alternativă cu cod

Răspuns în aceeași zi lucrătoare Ofertă fixă Fără parole

Vrei să ți-o facem noi?

Doar două câmpuri. Răspundem în aceeași zi lucrătoare, cu ofertă fixă.

+ Telefon și detalii (opțional)

Răspuns rapid

Cea mai simplă variantă este extensia oficială „Product Add-Ons”: adaugi un câmp „Short Text” sau „Long Text” (cu „Require input” și „Limit character length”) pe produs sau pe o grupă globală, iar textul apare în coș, în comandă și în emailuri. Fără extensie, câmpul se face cu cod: afișezi un input pe pagina produsului, îl validezi la adăugarea în coș, îl păstrezi în datele articolului din coș și îl copiezi în linia comenzii.

Ce ai nevoie

  • Produsele care se gravează
  • Regula: lungime maximă, caractere permise
  • Acces de administrator
  • Un mediu de test

Pașii, pe rând

  1. 1Hotărăște regulile textuluiLungime maximă, caractere permise (litere, cifre, diacritice), obligatoriu sau opțional și dacă se plătește separat. Regulile trebuie să corespundă cu ce poate grava atelierul.
  2. 2Varianta cu extensieInstalezi Product Add-Ons. Pe produs: Product data → Add-ons → Add field → Short Text (sau Long Text). Bifezi „Require input” și „Limit character length”. Pentru mai multe produse, creezi un grup global din Products → Add-Ons.
  3. 3Alege restricția câmpuluiLa Short Text poți restricționa la „Only Letters”, „Only Numbers”, „Only Letters and numbers” sau „Only Email Address”. Pentru nume cu spații și diacritice, lasă „Any text” și limitează lungimea.
  4. 4Varianta cu codFolosești patru cârlige: afișarea câmpului (woocommerce_before_add_to_cart_button), validarea (woocommerce_add_to_cart_validation), datele din coș (woocommerce_add_cart_item_data) și linia comenzii (woocommerce_checkout_create_order_line_item). Fragmentul de mai jos le leagă.
  5. 5Afișează textul în coșTextul trebuie să apară și în coș și la finalizare, ca clientul să-l poată verifica înainte de plată. Cu extensia se întâmplă automat.
  6. 6Verifică comanda și emailurileDeschide o comandă de test în administrare: textul trebuie să apară sub linia produsului, iar emailurile de confirmare să îl listeze.
  7. 7Testează cazurile limităText gol la un câmp obligatoriu, text prea lung, caractere speciale, același produs adăugat de două ori cu texte diferite (trebuie să rămână două linii separate).

Câmp „Text de gravat” fără extensie (schelet)

php
// 1) câmpul pe pagina produsului
add_action('woocommerce_before_add_to_cart_button', function () {
    echo '<p><label>Text de gravat<br><input type="text" name="text_gravat" maxlength="20" required></label></p>';
});

// 2) validare la adăugarea în coș
add_filter('woocommerce_add_to_cart_validation', function ($ok, $product_id) {
    $t = isset($_POST['text_gravat']) ? trim(wp_unslash($_POST['text_gravat'])) : '';
    if ($t === '' || mb_strlen($t) > 20) {
        wc_add_notice('Introdu un text de gravat de maximum 20 de caractere.', 'error');
        return false;
    }
    return $ok;
}, 10, 2);

// 3) păstrează textul în articolul din coș (linii separate pentru texte diferite)
add_filter('woocommerce_add_cart_item_data', function ($data) {
    if (!empty($_POST['text_gravat'])) {
        $data['text_gravat'] = sanitize_text_field(wp_unslash($_POST['text_gravat']));
    }
    return $data;
});

// 4) copiază textul în linia comenzii
add_action('woocommerce_checkout_create_order_line_item', function ($item, $key, $values) {
    if (!empty($values['text_gravat'])) {
        $item->add_meta_data('Text de gravat', $values['text_gravat']);
    }
}, 10, 3);

Fragmentele de cod sunt scheleturi: le adaptezi la magazinul tău și le testezi întâi pe un mediu de test (staging). Câmpul personalizat trece prin patru etape: afișare pe produs, validare, salvare în coș și salvare în linia comenzii. Dacă ai nevoie de mai mult de un câmp simplu, extensia Product Add-Ons le oferă gata făcute. Validarea de mai sus se aplică tuturor produselor: restrânge-o la produsele care se gravează (de exemplu cu has_term pe o categorie). Pentru a vedea textul și în coș, afișează-l cu filtrul woocommerce_get_item_data.

Cârligele woocommerce_add_cart_item_data și woocommerce_checkout_create_order_line_item sunt verificate în codul sursă WooCommerce. Câmpurile de pe pagina produsului nu apar în coșul cu blocuri fără integrare dedicată, deci testează pe tema ta.

Nu vrei să te complici sau ai rămas blocat? Scrie-ne și o facem noi.

Scrie-ne pe WhatsAppCere ofertă

Mai multe detalii

Cauze frecvente și greșeli de evitatDacă pașii de mai sus nu au rezolvat problema
1

Textul nu apare în comandă

De ce: Nu e copiat din datele coșului în linia comenzii.

Ce faci: Adaugă cârligul woocommerce_checkout_create_order_line_item sau folosește extensia.

2

Două texte diferite se contopesc într-o singură linie

De ce: Articolele din coș au aceeași identitate.

Ce faci: Datele adăugate prin woocommerce_add_cart_item_data fac articolul distinct în coș; verifică dacă le transmiți corect.

3

Câmpul nu apare pe pagina produsului

De ce: Tema nu folosește șablonul clasic sau produsul e de alt tip (variabil, de exemplu).

Ce faci: Verifică cârligul potrivit tipului de produs sau folosește extensia.

Întrebări frecvente4 răspunsuri
Pot limita numărul de caractere?

Da: cu extensia, „Limit character length” la Short Text și Long Text; cu cod, maxlength în input și verificare în validare.

Textul ajunge la atelier?

Apare sub linia produsului în comandă și în emailuri; vezi și ghidul despre fișa de producție.

Extensia e obligatorie?

Nu, dar pentru mai multe câmpuri, prețuri și încărcări de fișiere este mai sigură decât codul propriu.

Mă ajutați să-l implementez?

Da, inclusiv fluxul spre atelier. Cere ofertă fixă.