Sari la conținut
WEBLURE

WooCommerce · Curieri și AWB

WooCommerce: generarea AWB-urilor în masă

Generezi AWB-urile unul câte unul și pierzi ore. Vezi ce plugin-uri au deja acțiune în masă, ce faci dacă al tău nu o are și cum se construiește una la comandă.

  • Verifici dacă pluginul o are deja
  • Acțiune în masă personalizată
  • Compatibil cu HPOS
  • Loturi mari fără timeout
  • Erori raportate clar

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

Unele plugin-uri de curierat au deja acțiune în masă (modulul oficial Cargus are „Cargus Generate AWB”, iar extensia GLS pentru WooCommerce listează generare în masă), dar pluginul oficial Sameday nu are. Dacă al tău nu o are, adaugi o acțiune în masă personalizată în lista de comenzi (cu hook-urile pentru HPOS și pentru ecranul clasic), care apelează API-ul curierului pentru fiecare comandă selectată și salvează AWB-ul în comandă.

Ce ai nevoie

  • Plugin sau API de curier deja conectat
  • Acces de administrator și FTP/SFTP sau editor de cod
  • Un mediu de test (staging)
  • Backup recent

Pașii, pe rând

  1. 1Verifică dacă pluginul are deja generare în masăÎn WooCommerce → Comenzi selectează două comenzi și deschide meniul „Acțiuni în masă”. Dacă vezi o acțiune a curierului (de exemplu „Cargus Generate AWB”), nu ai nevoie de cod.
  2. 2Citește limitele pluginuluiDocumentația pluginului Sameday de pe WordPress.org arată că generarea în masă nu e inclusă. La alte plugin-uri, verifică documentația și evaluările înainte să te bazezi pe funcție.
  3. 3Decide: acțiune în masă sau generare automatăAcțiunea în masă pornește când apeși tu. Generarea automată (la schimbarea statusului comenzii) elimină complet pasul manual, dar cere reguli clare: ce status declanșează AWB-ul și ce faci cu erorile.
  4. 4Adaugă acțiunea în lista de comenziFolosești filtrele pentru lista de comenzi: bulk_actions-woocommerce_page_wc-orders (HPOS) și bulk_actions-edit-shop_order (ecranul clasic). Cheia acțiunii să nu conțină „mark_”, pentru că WooCommerce are un bug raportat pe HPOS cu astfel de chei.
  5. 5Procesează comenzile cu verificăriPentru fiecare comandă: sari peste cele care au deja AWB, apelează API-ul curierului, salvează AWB-ul în meta-datele comenzii și adaugă o notă. Numărul de reușite și eșecuri îl afișezi la final, ca să știi ce ai de refăcut.
  6. 6Împarte loturile mariUn lot de sute de comenzi poate depăși timpul maxim de execuție PHP sau limitele API-ului. Procesează în loturi de 10–20 sau folosește coada Action Scheduler inclusă în WooCommerce.
  7. 7Tipărește etichetele într-un singur fișierDupă generare, adună PDF-urile etichetelor într-un document unic, ca să le tipărești deodată pe imprimanta termică. Ordinea o păstrezi aceeași cu cea din lista de comenzi.
  8. 8Testează pe stagingRulează acțiunea pe 3–5 comenzi de test, cu cont de test al curierului, înainte să o activezi pe magazinul live.

Acțiune în masă „Generează AWB” (schelet)

php
add_filter('bulk_actions-woocommerce_page_wc-orders', 'wl_awb_bulk_actions'); // HPOS
add_filter('bulk_actions-edit-shop_order', 'wl_awb_bulk_actions');             // ecranul clasic
function wl_awb_bulk_actions($actions) {
    $actions['wl_generate_awb'] = 'Generează AWB';
    return $actions;
}

add_filter('handle_bulk_actions-woocommerce_page_wc-orders', 'wl_awb_bulk_handle', 10, 3);
add_filter('handle_bulk_actions-edit-shop_order', 'wl_awb_bulk_handle', 10, 3);
function wl_awb_bulk_handle($redirect, $action, $ids) {
    if ($action !== 'wl_generate_awb') {
        return $redirect;
    }
    $ok = 0;
    $fail = 0;
    foreach ($ids as $id) {
        $order = wc_get_order($id);
        if (!$order || $order->get_meta('_wl_awb')) {
            continue; // are deja AWB
        }
        $awb = wl_courier_create_awb($order); // aici apelezi API-ul curierului
        if ($awb) {
            $order->update_meta_data('_wl_awb', $awb);
            $order->add_order_note('AWB generat: ' . $awb);
            $order->save();
            $ok++;
        } else {
            $fail++;
        }
    }
    return add_query_arg(['wl_awb_ok' => $ok, 'wl_awb_fail' => $fail], $redirect);
}

add_action('admin_notices', function () {
    if (isset($_GET['wl_awb_ok'])) {
        printf('<div class="notice notice-info"><p>AWB generate: %d, eșuate: %d.</p></div>', absint($_GET['wl_awb_ok']), absint($_GET['wl_awb_fail'] ?? 0));
    }
});

Funcția wl_courier_create_awb() este locul unde apelezi API-ul curierului tău (autentificare, date expeditor și destinatar, greutate, ramburs). Fiecare curier are alt format; nu o poți copia fără adaptare. Testează pe staging.

Exemplul de cod este un schelet: nu conține apelul efectiv către curier. Hook-urile pentru lista de comenzi sunt documentate și folosite în tutoriale pentru HPOS, dar un bug WooCommerce raportat face ca acțiunile cu cheia care conține „mark_” să fie ignorate pe HPOS; de aceea cheia din exemplu începe cu „wl_”.

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

Acțiunea nu apare în meniu

De ce: Folosești hook-ul pentru ecranul clasic, dar magazinul are HPOS activ (sau invers), sau cheia acțiunii conține „mark_”.

Ce faci: Înregistrează ambele hook-uri (HPOS și clasic) și redenumește cheia acțiunii, fără „mark_”.

2

Lotul se oprește la jumătate

De ce: Timp maxim de execuție PHP depășit sau limită de cereri la API-ul curierului.

Ce faci: Procesează în loturi mici sau prin Action Scheduler și tratează explicit erorile și reîncercările.

3

Unele comenzi eșuează

De ce: Date lipsă sau nepotrivite (telefon, județ, localitate, greutate zero) fac API-ul să respingă cererea.

Ce faci: Validează datele înainte de apel și salvează motivul eșecului într-o notă a comenzii.

Întrebări frecvente4 răspunsuri
Pluginul Sameday poate genera AWB-uri în masă?

Documentația pluginului oficial arată că generarea în masă nu e inclusă. O poți obține printr-o acțiune personalizată sau o integrare făcută la comandă.

Funcționează și cu HPOS?

Da, dacă înregistrezi filtrele pentru ecranul de comenzi HPOS (woocommerce_page_wc-orders) și folosești API-ul de comenzi WooCommerce (wc_get_order), nu acces direct la tabelul de postări.

Pot genera AWB automat când comanda trece în „În curs de procesare”?

Da, prin hook-ul schimbării de status, cu aceleași verificări (AWB existent, validare date, gestionare erori). E mai riscant decât acțiunea manuală, deci se face cu teste și notificări de eroare.

Cât durează să-l implementați?

Depinde de curier și de cerințe (ramburs, mai multe colete, notificări). Îți dăm o ofertă fixă după ce vedem pluginul și fluxul tău.