תוסף WooCommerce מותאם אישית: מתי תוספים מוכנים לא מספיקים
אחד הלקוחות שלנו מכר ציוד בתשלום דחוי והנחות מצטברות המבוססות על סכום ההזמנה הכולל. WooCommerce הסטנדרטי לא יכול היה לחשב הנחות כאלה או ליצור סטטוס מותאם אישית 'ממתין למשלוח'. נאלצנו לפתח תוסף מותאם אישית מאפס. התוצאה הייתה תהליך אוטומטי מלא של נאמנות ומשלוח המטפל בעד 200 הזמנות ביום. לא ניתן לפתור משימות כאלה עם תוספים מוכנים.
WooCommerce בנוי על הוקים של WordPress ושכבת פילטרים משלו—פעולה ופילטר לכל שלב: הזמנה, מוצר, תשלום. תוסף מותאם אישית מטפל בלוגיקה עסקית שאינה מכוסה על ידי מודולים סטנדרטיים: תמחור לא קונבנציונלי, אינטגרציית ERP, סטטוסים מותאמים אישית, שדות מוצר, דוחות. פיתוח תוסף במורכבות בינונית אורך 5–10 ימי עבודה. לצוות שלנו יש ניסיון של 5+ שנים עם WooCommerce ויישמנו מעל 30 פתרונות מותאמים אישית, כולל אינטגרציות עם 1C ו-CRM.
כיצד להוסיף סטטוסי הזמנה מותאמים אישית ב-WooCommerce?
רשום את הסטטוס באמצעות register_post_status עם הקידומת wc-, ולאחר מכן הוסף אותו לרשימת הסטטוסים באמצעות הפילטר wc_order_statuses. ניתן להגדיר צבע תג בלוח הניהול ולהגדיר התראת דוא"ל בעת מעבר סטטוס.
הוראות שלב אחר שלב:
- רשום את הסטטוס באמצעות
register_post_status. - הוסף את הסטטוס למערך
wc_order_statusesדרך הפילטר. - (אופציונלי) הגדר צבע תג והתראת דוא"ל.
דוגמת קוד:
add_action('init', function () {
register_post_status('wc-awaiting-delivery', [
'label' => 'Ожидает отправки',
'public' => true,
'show_in_admin_status_list' => true,
'show_in_admin_all_list' => true,
'exclude_from_search' => false,
'label_count' => _n_noop('Ожидает отправки <span class="count">(%s)</span>', 'Ожидает отправки <span class="count">(%s)</span>'),
]);
});
add_filter('wc_order_statuses', function (array $statuses): array {
$statuses['wc-awaiting-delivery'] = 'Ожидает отправки';
return $statuses;
}); מדוע אינטגרציית HPOS (High-Performance Order Storage) חשובה?
החל מ-WooCommerce 7.1, הזמנות נשמרות בטבלאות add_action('init', function () { register_post_status('wc-awaiting-delivery', [ 'label' => 'Ожидает отправки', 'public' => true, 'show_in_admin_status_list' => true, 'show_in_admin_all_list' => true, 'exclude_from_search' => false, 'label_count' => _n_noop('Ожидает отправки <span class="count">(%s)</span>', 'Ожидает отправки <span class="count">(%s)</span>'), ]); }); add_filter('wc_order_statuses', function (array $statuses): array { $statuses['wc-awaiting-delivery'] = 'Ожидает отправки'; return $statuses; }); נפרדות, לא ב-wc_orders. בעבודה עם הזמנות, השתמש רק ב-API של wp_posts—שאילתות SQL ישירות ישברו כאשר HPOS מופעל. התוסף המותאם אישית חייב להצהיר על תאימות באמצעות WC_Order:
add_action('before_woocommerce_init', function () {
if (class_exists(\Automattic\WooCommerce\Utilities\FeaturesUtil::class)) {
\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility(
'custom_order_tables',
__FILE__,
true
);
}
});שימוש ב-FeaturesUtil::declare_compatibility עם פרמטרים מבטיח עבודה על שני סוגי האחסון.
דוגמת יישום של הנחה מצטברת
מערכת נאמנות: ככל שהלקוח הוציא יותר, כך ההנחה על ההזמנה הנוכחית גבוהה יותר. מיושם באמצעות add_action('before_woocommerce_init', function () { if (class_exists(\Automattic\WooCommerce\Utilities\FeaturesUtil::class)) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); } }); :
add_action('woocommerce_cart_calculate_fees', function (WC_Cart $cart): void {
if (is_admin() && !defined('DOING_AJAX')) return;
$user_id = get_current_user_id();
if (!$user_id) return;
$total_spent = wc_get_customer_total_spent($user_id);
$discount_pct = 0;
if ($total_spent >= 100000) $discount_pct = 10;
elseif ($total_spent >= 50000) $discount_pct = 7;
elseif ($total_spent >= 20000) $discount_pct = 5;
if ($discount_pct > 0) {
$cart->add_fee(sprintf('Накопительная скидка %d%%', $discount_pct), -($cart->get_subtotal() * $discount_pct / 100), true);
}
}); מהו Action Scheduler וכיצד להשתמש בו למשימות רקע?
Action Scheduler הוא מנהל משימות רקע מובנה ב-WooCommerce. הוא משתמש בטבלאות WordPress ואמין יותר מ-wp_cron הסטנדרטי: הוא מנסה שוב משימות שנכשלו ויש לו ממשק ניטור.
דוגמה לסנכרון מלאי:
as_schedule_single_action(time() + 60, 'my_plugin_sync_stock', ['supplier_id' => 42], 'my-plugin');
add_action('my_plugin_sync_stock', function (int $supplier_id): void {
$items = fetch_supplier_stock($supplier_id);
foreach ($items as $sku => $qty) {
$product_id = wc_get_product_id_by_sku($sku);
if ($product_id) {
$product = wc_get_product($product_id);
$product->set_stock_quantity($qty);
$product->save();
}
}
}); שדות מוצר מותאמים אישית: מתי הם נדרשים?
אם מוצר דורש מאפיינים נוספים (יצרן, ארץ מקור, אישורים), הוסף טאב בעורך המוצר באמצעות wc_get_orders ושדות באמצעות woocommerce_cart_calculate_fees. הנתונים נשמרים כ-post meta. זה מאפשר סינון מוצרים בלוח הניהול והצגת מידע בחנות.
השוואה בין תוסף מותאם אישית לתוסף מוכן
| קריטריון | תוסף מותאם אישית | תוסף מוכן |
|---|---|---|
| גמישות | חופש מלא בלוגיקה | מוגבל על ידי הוקים והגדרות |
| תאימות | מובטח לגרסה שלך | תלוי במפתח |
| ביצועים | מותאם למשימה; עד 50% זמני טעינה מהירים יותר | לעתים קרובות כבד ומיותר |
| מחיר | תמחור אישי, בדרך כלל חסכוני פי 3 בטווח הארוך | מנוי חודשי או חד-פעמי |
| תמיכה | אישית, אחריות לחודש | תיעוד בלבד |
| אבטחה | קוד נבדק וללא נפח מיותר | עלול להכיל פרצות |
טעויות נפוצות בפיתוח תוספי WooCommerce מותאמים אישית
| טעות | פתרון |
|---|---|
| שימוש בשאילתות SQL ישירות על wp_posts | מעבר ל-WC_Order API |
| חוסר תאימות ל-HPOS | הצהרת תמיכה באמצעות FeaturesUtil |
| שכחת Action Scheduler למשימות רקע | יישום תור אסינכרוני |
| אחסון שדות מקודד ללא סינון | שימוש ב-validate/sanitize של WooCommerce |
מה כלול בפיתוח תוסף WooCommerce מותאם אישית
- ניתוח דרישות עסקיות ועיצוב ארכיטקטורה
- קידוד בהתאם לתקני WordPress ו-WooCommerce
- אינטגרציה עם HPOS וגרסאות עדכניות
- תיעוד API וקוד (בפורמט README)
- מסירת גישה לתוסף ומדריך התקנה
- תמיכה באחריות לחודש לאחר המסירה
לוחות זמנים ותמחור
התמחור נקבע באופן אישי לאחר בריף. לוחות זמנים משוערים:
- תוסף עם שדות וסטטוסים מותאמים אישית: 3 עד 5 ימים
- תוסף עם לוגיקת הנחות מורכבת ואינטגרציית API: 8 עד 12 ימים
- תוסף עם משימות רקע וסנכרון ERP: 10 עד 15 ימים
רוצים לבצע אוטומציה של החנות המקוונת שלכם? קבלו ייעוץ לפרויקט שלכם—ננתח את הדרישות ונציע את הפתרון האופטימלי. הזמינו פיתוח תוסף WooCommerce מותאם אישית ושחררו את עצמכם ממגבלות הפתרונות המוכנים. אנו מבטיחים תאימות לגרסאות WooCommerce העדכניות ביותר וניסיון פיתוח של 5+ שנים.







