אתרי מסחר (איקומרס) אשר מוכרים מוצרים בעלות נמוכה, על מנת לכסות עלויות, לרוב ירצו להגביל את הרכישה לסכום מינימום.
לרוב מדובר על התקנת תוסף או תשלום למתכנת וורדפרס שיבצע את העבודה.

במאמר הבא נלמד כיצד לבנות מנגנון של הגבלת הרכישה לסכום מינימום ללא שימוש בתוסף כלל וע״י מספר צעדים פשוטים.

מדוע להגביל רכישה לסכום מינימום?

הגבלת הרכישה לסכום מינימום יכול להיות שמיש במספר מקרים, אשר כל אחד מהם מדבר על חלק אחר בתהליך הרכישה.

עלויות תפעול

ישנן חנויות אשר מחזיקות מחסנים או קונטיינרים שלמים של המלאי שלהם, ועל מנת לכסות את עלויות התפעול, נדרש סכום מינימום עבור מימוש הזמנה.
לרוב דבר זה רלוונטי כאשר החנות מוכרת מוצרים אשר העלות שלהם ליחידה הינה עלות זולה מאוד – מוצרי מסיבות, מוצרי מחנויות של מוצרים בשקל וכד׳.

חנויות אשר מוכרות גם בצורה סיטונאית לרוב ירצו להגביל את הרכישה לסכום מינימום או לכמות מינימלית של מוצרים.

עלויות שילוח

הגבלת הרכישה לסכום מינימום יכול להיות גם על מנת לכסות את עלויות השילוח, במידה והחנות מוכרת מוצרים גדולים, לרוב נדרש שילוח מיוחד – הובלה.

לרוב מומלץ לא לגבות משלוח, מכיוון שעלות משלוח נוספת יכולה להעלות את אחוז נטישת העגלה.
אף אחד לא אוהב הפתעות לקראת סוף תהליך הרכישה, לכן מומלץ ״לספוג״ את עלות המשלוח.

לכן, אחת הדרכים לטיפול בבעיה, היא להגביל את הרכישה לסכום מינימום כלשהו, אשר יכלול בתוכו את עלות המשלוח.

בניית מנגנון הגבלת רכישה לסכום מינימום

באמצעות מספר צעדים פשוטים, נלמד איך להוסיף לאתר שלנו את הגבלה הרכישה לסכום מינימום וזאת ללא תוסף כלל.

את הקוד הבא ניתן לשים בקוד של תבנית וורדפרס המותקנת באתר שלכם בקובץ functions.php, או לחילופין ע״י כתיבת תוסף.

שלב ראשון – בדיקת סכום העגלה והצגת הודעה

בשלב ראשון עלינו לבצע בדיקה של סכום הפריטים בעגלה, אנו עושים זאת ע״י שימוש ב-Hook של ווקומרס – woocommerce_before_cart.
הוק זה נקרא בעמוד עגלה, ממש לפני הצגת התוכן של העגלה, הוק זה נבחר מכיוון שהוא רץ ממש לפני שווקומרס מציגה את העגלה וההתראות.

נפתח את קובץ הפונקציות של התבנית שלנו functions.php ונדביק בסופו את הקוד הבא:

/**
 * Check if cart reached minimum amount, if not - display notice.
 */
function dorzki_wc_minimum_cart_check() {

	// Minimum cart total.
	$minimum_amount = 150;

	if( WC()->cart->subtotal < $minimum_amount ) {

		wc_print_notice( sprintf( __( 'You need to meet the required minimum of <strong>%s</strong> in order to procced to checkout.', 'woocommerce' ), wc_price( $minimum_amount ) ), 'error' );

	}

}

add_action( 'woocommerce_before_cart', 'dorzki_wc_minimum_cart_check' );

פונקציה זו משתמשת בפונקציה WC() של ווקומרס, אשר אחראית להחזיר לנו את האובייקט הגלובלי של ווקומרס.
לאחר מכן, אנו מבקשים לקבל את העגלה ואז את סכום הפריטים בעגלה, מה שלמזלנו ווקומרס מבצעת לבד.

במידה והסכום בעגלה לא עובר את הסכום שהגדרנו (בדוגמא שלנו: 150 ש״ח), אנו נציג התראה לגולש.
ההתראה תודפס ע״י שימוש בפונקציית wc_print_notice() אשר תדפיס ללקוח התראה המעידה על כך שהוא לא הגיע לסכום הנדרש.

צילום מסך של הגבלה סכום העגלה למינימום

שלב שני – הסרת כפתור Checkout

על מנת למנוע מצב שהגולש יוכל להתקדם לעמוד תשלום, אנו נרצה להסתיר את כפתור ״המשך לתשלום״ המוצג בעמוד העגלה.
חלק זה הינו חלק קריטי בהגבלת סכום הרכישה למינימום וזאת מכיוון שאנו מונעים מהגולש להתקדם לתשלום מכיוון שהוא לא הגיע לסכום הרצוי.

כל שעלינו לעשות זה להוסיף את השורה הבאה לקוד של השלב הקודם.
יש להוסיף אותו ממש אחרי הקריאה לפונקציה wc_print_notice() אשר מציגה את ההתראה לגולש.

remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 );

יש להבין כי הכפתור יוסר אך ורק אם הגולש לא הגיעה לסכום המינימום של המוצרים בעגלה.
ייתכן כי בחלק מתבניות וורדפרס אשר משנות את התבניות של ווקומרס יהיה צריך לשנות את הקוד מעט.

שלב שלישי – הגבלת הגישה לעמוד Checkout

הדבר הראשון אשר מלמדים כל מתכנת, הוא שאסור לסמוך על הגולש אף פעם.
מכיוון שאת מרבית הגולשים שלנו אנחנו לא מכירים, אנחנו לא יודעים מאיזה רקע הוא בא ומה הידע שלו.

על כן אנו צריכים לוודא שהגולש לא ינסה להתחכם ולגשת לעמוד התשלום ישירות, וכך בעצם להערים עלינו.
לכן אנו צריכים שכבת הגנה נוספת שמטרתה היא לוודא כי לא ניתן לרכוש אם לא הגיעו לסכום מינימום.

בשלב זה אנו נוודא כי לא ניתן לגשת לעמוד התשלום בצורה ישירה דרך שורת הכתובת.

/**
 * If trying to access checkout directly without the required minimum. redirect to cart.
 */
function dorzki_wc_minimum_disable_checkout() {

	// Minimum cart total.
	$minimum_amount = 150;

	if( WC()->cart->subtotal < $minimum_amount && ( is_checkout() && ! is_wc_endpoint_url( 'order-received' ) ) ) {

		wp_redirect( wc_get_cart_url() );
		exit;

	}

}

add_action( 'template_redirect', 'dorzki_wc_minimum_disable_checkout' );

בשלב זה אנו מתערבים באופן בו וורדפרס מקשרת בין קישורים לבין העמודים השונים ע״י שימוש בהוק template_redirect.

הפונקציה בודקת גם כאן מספר תנאים, כאשר הראשונה מביניהם הוא בדיקת סכום הפריטים בעגלה.
בנוסף אנו מבצעים עוד שתי בדיקות מהותיות מאוד, הראשונה היא בדיקה האם העמוד הוא עמוד תשלום.

הבדיקה השנייה בודקת האם אנחנו לא בעמוד תודה המאשר את סיום הרכישה.
הבדיקה הזאת נוספת לאחר פרסום הפוסט עקב הערה שקיבלתי כי אנשים אשר השתמשו בקוד קיבלו דיווח מהלקוחות שלהם כי לאחר תשלום הם מופנים חזרה לעגלה.

במידה והתנאים מחזירים אמת כולם, אנו מבצעים הפנייה של עמוד העגלה של ווקומרס.
אנו משתמשים ב-wp_redirect() על מנת לבצע את ההפנייה וב-wc_get_cart_url() על מנת לקבל את הקישור לעמוד עגלה.

שימו לב שחשוב להשתמש ב-exit או ב-die לאחר ההפנייה על מנת לעצור את העבודה של וורדפרס ולבצע את ההפניה.

שימושים נוספים לסכום מינימום

מלבד הגבלת הרכישה לסכום מינימום, ע״י שינויים בקוד ניתן לבצע מספר שינויים קלים.
ע״י ביצוע השינויים הללו ניתן יהיה לבצע מגוון רחב של פעולות והגבלות להתאמה לחנות שלכם.

חיוב משלוח כאשר לא מגיעים לסכום מינימום

במקום להגביל את הרכישה ולכאורה לפגוע אולי בהמרות, ניתן פשוט לשנות את מחיר המשלוח לחינם כאשר מגיעים למינימום.
כמובן שעם מספר שינויים בקוד ניתן אפילו שההתראה תציג הסכום אשר יש להוסיף לעגלה על מנת להגיע למינימום.

מתן הנחה אוטומטית בעת הגעה לסכום מינימום

ניתן לשנות את הקוד ככה שכאשר מגיעים לסכום מינימלי תינתן הנחה מסויימת עבור הסכום בעגלה.
בעבר למדנו איך לשנות את המחירים של מוצר אחד או יותר בעגלה במאמר על שינוי מחיר מוצר לפי כמות בווקומרס.

מתן מוצר במתנה בעת הגעה לסכום מינימום

ע״י יצירת מוצר אשר יחשב כמתנה, ניתן אפילו לבצע את האפשרות שכאשר הגולש מגיע לסכום המינימלי, נוכל להוסיף לו אוטומטית מוצר לעגלה.
המוצר הזה יהיה עם עלות 0 כמובן, על מנת שהוא יחשב באמת כמתנה.

סיכום

הגבלת כמות הרכישה לסכום מינימלי הינו חלק משמעותי עבור חנויות אשר מוכרות בצורה סיטונאית או כאשר יש צורך בכיסוי עלויות שילוח.
עם ידע בווקומרס ושינויים קלים בקוד, ניתן להגיע למצב שנוכל להשתמש בקוד למגוון רחב של שימושים אשר יתאימו בצורה יותר טובה לדרישות החנות.

אז מה דעתכם? לאיזה שימוש הייתם רוצים לראות מאמר נוסף?

    כתיבת תגובה

    1. ישראל

      לא עדיף להריץ את הקוד רק הדף תשלום במקום לבדוק אם זה דף תשלום ?

      הגב
      1. דור צוברי

        היי ישראל,
        אני רוצה להתערב ישירות בהפניות שוורדפרס עושה, ככה אני אוכל למנוע גישה ישירה לעמוד.

    2. רוב

      איך אפשר לעשות דבר כזה לכמות מינימלית למוצר מסוים?
      למשל מוצר אחד שהכמות המינימלית שלו תהיה 3

      הגב
      1. דור צוברי

        היי רוב,
        אתה צריך ידע ב-PHP על מנת לשנות את הקוד ולהתאים אותו לצרכים שלך, במידה ואתה לא יודע, אתה מוזמן לפנות לצורך קבלת הצעת מחיר.

    אפשר להציע לך עוגיות? יש גם קפה! השימוש בקוקיז עוזר לשפר את הביקור שלך באתר. המשך גלישה אומר שהסכמת למדיניות הפרטיות שלי, וגם לקפה.

    שתפו