מה הם WooCommerce hooks ולמה הם קיימים
כשמישהו מבקש לשנות את הטקסט על כפתור "הוסף לעגלה" או להוסיף שדה מותאם אישית בדף התשלום, הפתרון הנפוץ הוא לערוך ישירות את קבצי WooCommerce. זו טעות שעולה ביוקר בכל עדכון. WooCommerce hooks הם המנגנון שנבנה בדיוק כדי למנוע את הצורך הזה.
Hook הוא נקודת חיבור שמוגדרת בתוך קוד WooCommerce, שמאפשרת לכם "להיתלות" עליה ולהריץ קוד משלכם בלי לגעת בקבצי הליבה. ישנם שני סוגים: Action hooks מאפשרים לבצע פעולה בנקודה מסוימת בתהליך, ו-Filter hooks מאפשרים לקבל ערך, לשנות אותו ולהחזיר אותו. WooCommerce מכיל מאות hooks מוגדרים מראש, מה שהופך אותו לאחת הפלטפורמות הגמישות ביותר לפיתוח חנויות אונליין.
הרישום לhook נעשה עם שתי פונקציות: add_action() לactions ו-add_filter() לfilters. שתיהן מקבלות את שם ה-hook, שם הפונקציה שתרוץ, ואופציונלית את ה-priority וכמות הארגומנטים.
Hook 1: woocommerce_before_single_product
זהו אחד מה-hooks הנפוצים ביותר בפיתוח WooCommerce. הוא מופעל ממש לפני תוכן עמוד המוצר הבודד, ומאפשר להוסיף כל תוכן מעל תמונת המוצר, הכותרת והמחיר.
שימוש נפוץ: הוספת באנר "משלוח חינם מעל 200 ש"ח" שמופיע בכל עמוד מוצר, או הצגת הודעת מבצע ספציפית לקטגוריה. הקוד נראה כך:
add_action( 'woocommerce_before_single_product', 'add_promo_banner' );
function add_promo_banner() {
echo 'משלוח חינם מעל 200 ש"ח';
}
טעות נפוצה שאנחנו רואים: מפתחים מוסיפים לוגיקה כבדה ישירות לתוך הפונקציה הזו, כולל שאילתות לבסיס הנתונים, בלי לבדוק אם אנחנו בכלל בעמוד מוצר. תמיד הוסיפו בדיקה עם is_product() לפני הרצת קוד כבד.
Hook 2: woocommerce_add_to_cart_validation
Filter hook שמאפשר לאמת אם מוצר יכול להתווסף לעגלה לפני שהפעולה מתבצעת. הוא מקבל ערך boolean ומחזיר true או false.
דוגמה מהשטח: לקוח שמכר מוצרים עם הגבלת גיל ביקש שלא ניתן יהיה להוסיף יותר מ-3 יחידות מאותו מוצר לעגלה. הפתרון:
add_filter( 'woocommerce_add_to_cart_validation', 'limit_product_quantity', 10, 3 );
function limit_product_quantity( $passed, $product_id, $quantity ) {
$cart_contents = WC()->cart->get_cart();
foreach ( $cart_contents as $item ) {
if ( $item['product_id'] === $product_id ) {
if ( $item['quantity'] + $quantity > 3 ) {
wc_add_notice( 'לא ניתן להוסיף יותר מ-3 יחידות', 'error' );
return false;
}
}
}
return $passed;
}
שימו לב לפרמטר השלישי בהגדרת add_filter, שמציין שהפונקציה מקבלת 3 ארגומנטים. זו טעות קלאסית שגורמת ל-hook לא לעבוד כמצופה.

Hook 3: woocommerce_checkout_fields
Filter hook שמאפשר לשנות, להוסיף, להסיר ולסדר מחדש שדות בדף התשלום. זה אחד מה-hooks הגמישים ביותר ב-WooCommerce, ומאפשר שליטה מלאה על חוויית הצ'קאאוט.
השדות מחולקים לקבוצות: billing, shipping, account ו-order. כל קבוצה היא מערך שניתן לשנות:
add_filter( 'woocommerce_checkout_fields', 'customize_checkout_fields' );
function customize_checkout_fields( $fields ) {
// הסרת שדה החברה
unset( $fields['billing']['billing_company'] );
// הוספת שדה מספר תעודת זהות
$fields['billing']['billing_id_number'] = array(
'label' => 'מספר תעודת זהות',
'required' => true,
'class' => array( 'form-row-wide' ),
'priority' => 25,
);
return $fields;
}
נקודה חשובה: אם מוסיפים שדה מותאם אישית, צריך גם לשמור את הערך שלו בהזמנה עם ה-hook woocommerce_checkout_update_order_meta. בלי זה, הנתון יאסף אבל לא יישמר.
Hook 4: woocommerce_thankyou
Action hook שמופעל בעמוד אישור ההזמנה, אחרי שהרכישה הושלמה. הוא מקבל את מזהה ההזמנה כארגומנט, מה שמאפשר גישה לכל נתוני ההזמנה.
שימושים נפוצים כוללים:
- הצגת הוראות מיוחדות לפי שיטת המשלוח שנבחרה
- הפעלת פיקסל מעקב עם נתוני ההזמנה
- הצגת קופון לרכישה הבאה
- שליחת נתונים ל-CRM חיצוני
add_action( 'woocommerce_thankyou', 'show_next_purchase_coupon', 10, 1 );
function show_next_purchase_coupon( $order_id ) {
$order = wc_get_order( $order_id );
if ( $order->get_total() > 300 ) {
echo 'קוד הנחה לרכישה הבאה: NEXT10';
}
}

Hook 5: woocommerce_product_get_price
Filter hook שמאפשר לשנות את המחיר המוצג של מוצר בזמן אמת. זה שונה מעריכת המחיר בממשק הניהול, כי השינוי מתבצע דינמית בהתאם לתנאים שאתם מגדירים.
דוגמה: הצגת מחיר מיוחד למשתמשים מחוברים שהם חברי מועדון:
add_filter( 'woocommerce_product_get_price', 'member_discount_price', 10, 2 );
function member_discount_price( $price, $product ) {
if ( is_user_logged_in() && current_user_can( 'club_member' ) ) {
return $price * 0.85; // הנחה של 15%
}
return $price;
}
אזהרה מהשטח: hook זה מופעל פעמים רבות בכל טעינת עמוד, לפעמים עשרות פעמים בעמוד קטגוריה עם הרבה מוצרים. אם הלוגיקה שלכם כוללת שאילתת בסיס נתונים, זה יכול לפגוע משמעותית בביצועים. השתמשו ב-static variable או transient לשמירת תוצאות.
איך מוצאים hooks לפי עמוד ספציפי
אחת השאלות הנפוצות שמפתחים שואלים: "איך אני יודע איזה hook להשתמש בו?" התשובה הפרקטית ביותר היא להשתמש בתוסף Query Monitor, שמציג בזמן אמת את כל ה-hooks שמופעלים בכל עמוד, כולל ה-priority וכמה פונקציות רשומות על כל אחד.
דרך נוספת היא לעיין ב-WooCommerce Code Reference הרשמי, שמתעד את כל ה-hooks הזמינים עם הסבר על הארגומנטים שכל אחד מקבל. לחיפוש מהיר, חיפוש בקוד המקור של WooCommerce אחר do_action ו-apply_filters יחשוף את כל נקודות ה-hook.
בפרויקטים שאנחנו עובדים עליהם, אנחנו תמיד מתחילים בבדיקה אם ה-hook שאנחנו צריכים כבר קיים לפני שכותבים פתרון מותאם אישית. ב-90% מהמקרים, WooCommerce כבר מספק בדיוק מה שצריך.
Hook 6: woocommerce_order_status_changed
Action hook שמופעל בכל פעם שסטטוס הזמנה משתנה. הוא מקבל שלושה ארגומנטים: מזהה ההזמנה, הסטטוס הישן והסטטוס החדש. זה אחד מה-hooks החזקים ביותר לאוטומציה של תהליכים עסקיים.
שימושים אמיתיים:
- שליחת SMS ללקוח כשהזמנה עוברת ל-"בדרך אליך"
- עדכון מלאי במערכת ERP חיצונית כשהזמנה מאושרת
- יצירת משימה ב-CRM כשהזמנה מבוטלת
- שליחת נתונים לפלטפורמת שיווק כשהרכישה הושלמה
- הפעלת תהליך החזר אוטומטי כשסטטוס עובר ל-refunded
add_action( 'woocommerce_order_status_changed', 'notify_on_shipping', 10, 3 );
function notify_on_shipping( $order_id, $old_status, $new_status ) {
if ( $new_status === 'shipped' ) {
$order = wc_get_order( $order_id );
$phone = $order->get_billing_phone();
// שליחת SMS דרך API חיצוני
send_sms_notification( $phone, 'ההזמנה שלך בדרך!' );
}
}
Hook 7: woocommerce_cart_calculate_fees
Action hook שמאפשר להוסיף עמלות או הנחות לעגלה בצורה דינמית. הוא מופעל בזמן חישוב סכום העגלה, ומאפשר שימוש ב-WC()->cart->add_fee() להוספת שורות מחיר מותאמות.
דוגמה: הוספת עמלת טיפול להזמנות מתחת ל-100 ש"ח:
add_action( 'woocommerce_cart_calculate_fees', 'add_small_order_fee' );
function add_small_order_fee() {
$cart_total = WC()->cart->get_subtotal();
if ( $cart_total cart->add_fee( 'עמלת טיפול', 15, true );
}
}
ה-hook הזה שימושי גם להוספת הנחות: העבירו ערך שלילי ל-add_fee וזה יופיע כהנחה בסיכום העגלה. זה פתרון נקי יותר מניסיון לשנות מחירים ישירות.
Hook 8: woocommerce_email_order_details
Action hook שמופעל בתוך אימיילי WooCommerce, ומאפשר להוסיף תוכן מותאם אישית לאחר פרטי ההזמנה. הוא מקבל את אובייקט ההזמנה, האם זה אימייל ללקוח, האם זה אימייל HTML, ואת שפת האימייל.
שימוש נפוץ: הוספת הוראות מיוחדות לפי שיטת המשלוח שנבחרה, ישירות באימייל האישור:
add_action( 'woocommerce_email_order_details', 'add_pickup_instructions', 10, 4 );
function add_pickup_instructions( $order, $sent_to_admin, $plain_text, $email ) {
if ( $email->id === 'customer_completed_order' ) {
$shipping_method = $order->get_shipping_method();
if ( strpos( $shipping_method, 'איסוף עצמי' ) !== false ) {
echo 'כתובת לאיסוף: רחוב הרצל 1, תל אביב. שעות פעילות: א-ה 9:00-18:00
';
}
}
}
טיפ מקצועי: תמיד בדקו את ה-$email->id לפני הוספת תוכן, כדי שהתוכן יופיע רק באימייל הרלוונטי ולא בכל האימיילים שWooCommerce שולח.
כתיבת hooks בצורה שתחזיק לאורך זמן
הכתיבה הנכונה של WooCommerce hooks היא לא רק שאלה טכנית, היא שאלה ארכיטקטורית. כל hook שכותבים צריך לגור בתוך child theme או תוסף ייעודי, לעולם לא בקבצי WooCommerce עצמו. עדכון הפלאגין ימחק כל שינוי ישיר.
כמה כללים שאנחנו מיישמים בכל פרויקט:
- תמיד בדקו את ה-priority לפני שאתם מניחים שה-hook שלכם ירוץ ראשון
- השתמשו ב-
remove_action()ו-remove_filter()כשצריך לבטל hooks של תוספים אחרים - תעדו כל hook שאתם מוסיפים עם הסבר למה הוא קיים
- בדקו hooks אחרי כל עדכון גדול של WooCommerce, כי לפעמים hooks מוסרים או משנים חתימה
לפרויקטים שמשלבים פיתוח WooCommerce עם אסטרטגיה שיווקית רחבה יותר, כדאי לקרוא על איקומרס ומה שמניע חנויות אונליין מוצלחות. הבנת הצד העסקי עוזרת לקבל החלטות טובות יותר גם בצד הטכני.
WooCommerce מתעד את כל ה-hooks הזמינים ב-WooCommerce Developer Documentation, שהוא המקור הרשמי והמעודכן ביותר. כל שינוי בגרסה חדשה מתועד שם, כולל hooks שהוסרו או שינו התנהגות.
מפתחים שרוצים להעמיק בבניית בק-אנד חזק לחנות שלהם יכולים לקרוא גם על בניית בק-אנד שמחזיק אתר מצליח, שמסביר את העקרונות הרחבים יותר מעבר ל-WooCommerce ספציפית.



