שילוב משלוחים WooCommerce
כל יום, חנויות מקוונות מאבדות לקוחות בגלל חישוב משלוח איטי או היעדר ספק מועדף. לאחרונה, חנות עם קטלוג של 5,000 מוצרים פנתה אלינו. הם השתמשו בתוסף ששלח בקשה ל-API של הספק בכל שינוי בעגלה ללא מטמון. במהלך מבצע שיא (20% הנחה), עומס השרת גדל פי 10, וזמן החישוב הגיע ל-40 שניות. יישמנו שיטה מותאמת אישית עם מטמון transient ו-tariffs חלופיים — הזמן ירד ל-150 אלפיות השנייה, ושיעור ההמרה בקופה עלה ב-17%. מצב זה מוכר לרבים: WooCommerce מחוץ לקופסה מציעה רק שלוש שיטות משלוח פרימיטיביות — תעריף אחיד, משלוח חינם ואיסוף מקומי. עבור עסק אמיתי, זה לא מספיק בצורה קטסטרופלית. אתה צריך תעריפי ספק ספציפיים, חישוב לפי מידות ומשקל, מספר מעקב בחשבון הלקוח ועדכוני סטטוס אוטומטיים.
עם ניסיון של למעלה מ-5 שנים בשילובי משלוחים WooCommerce, השלמנו יותר מ-40 פרויקטים, ועזרנו ללקוחות להפחית את נטישת העגלה ב-30% בממוצע. לקוח אחד דיווח על חיסכון של $2,500 לחודש לאחר שילוב Nova Poshta ו-SDEK.
אילו בעיות פותר שילוב משלוחים WooCommerce?
בעיות טיפוסיות: אין חישוב בזמן אמת, יצירת משלוח ידנית, הזמנות אבודות בגלל תעריפים מיושנים, עומס שרת מבקשות ללא מטמון, חוסר יכולת לבחור נקודת איסוף. השילוב שלנו פותר את כולן: מחשב עלות דינמית, יוצר משלוח כשההזמנה עוברת לעיבוד, שומר תוצאות במטמון למשך 30–60 דקות, משתמש בתעריפים חלופיים בכשלי API, ומטמיע ווידג'ט נקודת איסוף בקופה. בפרויקט אחד, אוטומציית משלוחים הפחיתה עבודה ידנית ב-80% והאיצה את עיבוד ההזמנות פי 3. החיסכון הלוגיסטי הממוצע הודות לאוטומציה עומד על 15–20% מהמחזור, ועלות השילוב מחזירה את עצמה בממוצע תוך 3 חודשים.
איך עובד משלוח ב-WooCommerce?
ארכיטקטורת המשלוח בנויה על שלוש שכבות: אזורי משלוח (Shipping zones), שיטות משלוח (Shipping methods) ותעריפי משלוח (Shipping rates). כל שיטה מותאמת אישית מרחיבה את המחלקה WC_Shipping_Method. הנה יישום מינימלי:
לחץ לצפייה בקוד
class My_Courier_Shipping_Method extends WC_Shipping_Method {
public function __construct( $instance_id = 0 ) {
$this->id = 'my_courier';
$this->instance_id = absint( $instance_id );
$this->method_title = 'MyCourier';
$this->method_description = 'Доставка через MyCourier API';
$this->supports = [ 'shipping-zones', 'instance-settings' ];
$this->init();
}
public function init(): void {
$this->init_form_fields();
$this->init_settings();
$this->api_key = $this->get_option( 'api_key' );
add_action( 'woocommerce_update_options_shipping_' . $this->id, [ $this, 'process_admin_options' ] );
}
public function calculate_shipping( $package = [] ): void {
$rate = $this->get_rate_from_api( $package );
if ( $rate ) {
$this->add_rate([
'id' => $this->id . '_standard',
'label' => 'Стандартная доставка (' . $rate['days'] . ' дн.)',
'cost' => $rate['price'],
'meta_data' => [ 'courier_id' => $rate['service_id'] ],
]);
}
}
}רשום את השיטה באמצעות פילטר:
add_filter( 'woocommerce_shipping_methods', function( $methods ) {
$methods['my_courier'] = My_Courier_Shipping_Method::class;
return $methods;
});אנו משתמשים ב-API של שיטות המשלוח של WooCommerce כדי ליצור חישובים מותאמים אישית. זה נותן שליטה מלאה על תעריפים ומטמון.
למה שיטת משלוח מותאמת אישית עדיפה על תוספים מוכנים?
תוספים מוכנים (למשל, עבור SDEK או Nova Poshta) לרוב בעלי הגדרות מוגבלות ותלויים בעדכוני תוסף. שיטה מותאמת אישית נותנת שליטה מלאה על הלוגיקה, המטמון וטיפול בשגיאות. לדוגמה, אתה יכול להוסיף תעריף לא סטנדרטי לפי סוג מוצר או ליישם אלגוריתם משקל נפחי משלך.
| פרמטר | תוסף (SDEK, Nova Poshta) | שיטה מותאמת אישית |
|---|---|---|
| זמן יישום | 1–2 ימים | 3–5 ימים |
| גמישות תצורה | מוגבל להגדרות התוסף | שליטה מלאה |
| תמיכה בתעריפים לא סטנדרטיים | לא | כן |
| תלות בעדכוני תוסף | גבוהה | נמוכה |
איך לחשב תעריפים דרך ה-API של הספק?
רוב שירותי המשלוחים כוללים REST API לחישוב עלות. דוגמה לבקשה ל-API בדיוני (עם מטמון):
private function get_rate_from_api( array $package ): ?array {
$cache_key = 'courier_rate_' . md5( serialize( $package ) );
$cached = get_transient( $cache_key );
if ( $cached !== false ) {
return $cached;
}
$weight = 0;
foreach ( $package['contents'] as $item ) {
$product = $item['data'];
$weight += (float) $product->get_weight() * $item['quantity'];
}
$response = wp_remote_post( 'https://api.mycourier.ru/v2/calculate', [
'timeout' => 10,
'headers' => [
'Authorization' => 'Bearer ' . $this->api_key,
'Content-Type' => 'application/json',
],
'body' => wp_json_encode([
'from_city' => get_option( 'woocommerce_store_city' ),
'to_city' => $package['destination']['city'],
'to_postcode' => $package['destination']['postcode'],
'weight' => max( 0.1, $weight ),
'declared_value' => WC()->cart->get_cart_contents_total(),
]),
]);
if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) !== 200 ) {
return null;
}
$rate_data = json_decode( wp_remote_retrieve_body( $response ), true );
set_transient( $cache_key, $rate_data, 30 * MINUTE_IN_SECONDS );
return $rate_data;
}מטמון עם transients הוא דרך פשוטה להפחית עומס. בפרויקט שלנו, המטמון קיצץ את מספר בקשות ה-API מ-5,000 לשעה ל-50, חוסך משאבי שרת ומאיץ את הקופה.
שליחת הזמנות לשירות המשלוחים
לאחר אישור הזמנה, צור משלוח. ה-hook class My_Courier_Shipping_Method extends WC_Shipping_Method { public function __construct( $instance_id = 0 ) { $this->id = 'my_courier'; $this->instance_id = absint( $instance_id ); $this->method_title = 'MyCourier'; $this->method_description = 'Доставка через MyCourier API'; $this->supports = [ 'shipping-zones', 'instance-settings' ]; $this->init(); } public function init(): void { $this->init_form_fields(); $this->init_settings(); $this->api_key = $this->get_option( 'api_key' ); add_action( 'woocommerce_update_options_shipping_' . $this->id, [ $this, 'process_admin_options' ] ); } public function calculate_shipping( $package = [] ): void { $rate = $this->get_rate_from_api( $package ); if ( $rate ) { $this->add_rate([ 'id' => $this->id . '_standard', 'label' => 'Стандартная доставка (' . $rate['days'] . ' дн.)', 'cost' => $rate['price'], 'meta_data' => [ 'courier_id' => $rate['service_id'] ], ]); } } } מופעל כשההזמנה עוברת ל"עיבוד":
add_action( 'woocommerce_order_status_processing', function( int $order_id ) {
$order = wc_get_order( $order_id );
foreach ( $order->get_shipping_methods() as $shipping_item ) {
if ( strpos( $shipping_item->get_method_id(), 'my_courier' ) === false ) {
continue;
}
$result = courier_create_shipment( $order );
if ( $result['tracking_number'] ) {
$order->update_meta_data( '_courier_tracking_number', $result['tracking_number'] );
$order->update_meta_data( '_courier_shipment_id', $result['shipment_id'] );
$order->save();
$order->add_order_note( 'Отправление создано. Трекинг: ' . $result['tracking_number'], true );
}
}
} ); איך לעדכן סטטוס משלוח אוטומטית?
יישם משלוח webhook של WooCommerce או השתמש בסקרי cron תקופתיים. ה-webhook מהספק מעדכן את סטטוס ההזמנה אוטומטית:
add_action( 'courier_sync_tracking', function() {
$orders = wc_get_orders([
'meta_key' => '_courier_tracking_number',
'meta_compare' => 'EXISTS',
'status' => [ 'wc-processing', 'wc-shipped' ],
'limit' => 50,
]);
foreach ( $orders as $order ) {
$tracking = $order->get_meta( '_courier_tracking_number' );
$status = courier_api_get_status( $tracking );
if ( $status === 'delivered' && $order->get_status() !== 'completed' ) {
$order->update_status( 'completed', 'Доставлено по данным перевозчика.' );
}
}
});
if ( ! wp_next_scheduled( 'courier_sync_tracking' ) ) {
wp_schedule_event( time(), 'twohourly', 'courier_sync_tracking' );
}מעקב הזמנות WooCommerce מופעל דרך API: מספר המעקב מוצג בחשבון הלקוח ובמיילים.
תוצרים
- ביקורת – ניתוח לוגיסטיקה נוכחית, הערכת תוסף, איסוף מפתחות API.
- שיטת משלוח מותאמת אישית – מחלקת
add_filter( 'woocommerce_shipping_methods', function( $methods ) { $methods['my_courier'] = My_Courier_Shipping_Method::class; return $methods; });, שילוב API, מטמון, גיבוי. - הגדרת מעקב – הצגת מספר במיילים ובחשבון, עדכון סטטוס אוטומטי דרך webhook.
- ווידג'ט נקודת איסוף – בחירה בקופה, שמירה במטא של ההזמנה.
- תיעוד – תיאור ארכיטקטורה, הוראות להוספת ספקים חדשים.
- הדרכה – מפגש של שעה לצוות שלך על ניהול השילוב.
- גישה – אנו מטפלים בהגדרת מפתחות API ופרטי התחברות.
- תמיכה – אחריות ל-30 יום לאחר המסירה.
ציר זמן יישום
שילוב עם ספק אחד דרך תוסף מוכן (SDEK, DHL, Nova Poshta): 1–2 ימים. שיטה מותאמת אישית עם מחזור מלא — חישוב, יצירת משלוח, מעקב, webhook: 3–5 ימים. הוספת ווידג'ט נקודת איסוף + התאמת מיילים: עוד 1–2 ימים. שילוב של מספר ספקים עם ממשק ניהול אחיד: 1–2 שבועות.
טעויות שילוב טיפוסיות
- אין מטמון לבקשות API — עומס יתר על השרת.
- חישוב משקל נפחי שגוי למוצרים במידות גדולות.
- התעלמות מתעריפים חלופיים כשהספק אינו זמין.
- אין מספר מעקב לקונה — עלייה בפניות תמיכה.
צור קשר
במהלך הפרקטיקה שלנו, השלמנו יותר מ-40 שילובי משלוחים לחנויות WooCommerce. זה אפשר ללקוחותינו להפחית את נטישת העגלה ב-30% בממוצע. קבל ייעוץ על שילוב משלוחים לחנות שלך — כתוב לנו, ונשלח לך הצעה תוך יום עסקים אחד. צור קשר כדי לדון בפרויקט שלך.







