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

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

שלב ראשון – הוספת כפתור בעמוד מוצר

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

/**
 * Inject buy now button to product page.
 */
function dorzki_wc_buy_now_product_page_button() {

	global $product;

	printf( '<button type="submit" name="buy-now" value="%d" class="single_add_to_cart_button buy_now_button button alt">%s</button>', $product->get_ID(), esc_html__( 'Buy Now', 'dorzki-wc-buy-now' ) );

}

add_action( 'woocommerce_after_add_to_cart_button', 'dorzki_wc_buy_now_product_page_button' );

קוד זה מוסיף את כפתור הרכישה מיד אחרי כפתור ההוספה לסל של ווקומרס.

צילום מסך של כפתור רכישה מהירה

שלב שני – הוספת כפתור בעמוד קטגוריה

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

/**
 * Inject buy now button to product archive page.
 *
 * @return bool
 */
function dorzki_wc_buy_now_product_archive_button() {

  global $product;

  if ( ! $product->is_type( 'simple' ) ) {
    return false;
  }

  printf( '<a href="%s?buy-now=%s" data-quantity="1" class="button product_type_simple add_to_cart_button  buy_now_button" data-product_id="%s" rel="nofollow">%s</a>', wc_get_checkout_url(), $product->get_ID(), $product->get_ID(), esc_html__( 'Buy Now', 'dorzki-wc-buy-now' ) );

}

add_action( 'woocommerce_after_shop_loop_item', 'dorzki_wc_buy_now_product_archive_button', 20 );

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

שלב שלישי – טיפול בבקשת רכישה מהירה

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

/**
 * Handle the click on buy now button.
 *
 * @return bool
 */
function dorzki_wc_buy_now_handle_buy_now_request() {

	if ( ! isset( $_REQUEST['buy-now'] ) ) {
		return false;
	}

	WC()->cart->empty_cart();

	$product_id = absint( $_REQUEST['buy-now'] );

	if ( isset( $_REQUEST['variation_id'] ) ) {

		$variation_id = absint( $_REQUEST['variation_id'] );

		WC()->cart->add_to_cart( $product_id, 1, $variation_id );

	} else {

		WC()->cart->add_to_cart( $product_id );

	}

	wp_safe_redirect( wc_get_checkout_url() );
	exit;

}

add_action( 'wp_loaded', 'dorzki_wc_buy_now_handle_buy_now_request' );

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

סיכום

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

    כתיבת תגובה

    1. רמי יושובייב

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

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

        שמח לשמוע רמי!

    2. מאיר

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

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

        היי מאיר,
        לצערי אין לי איך להראות לך את זה, אני לא חושף פרטים אודות הלקוחות שלי.

        אתה מוזמן להתקין את התוסף באתר שלך ולראות את זה 🙂

    3. רחל

      תודה רבה!
      עזר לי מאד

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

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

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

    4. אבי

      הי דור,
      נתקלתי ממש במקרה באתר שלך ומצאתי בו חומרים ממש מעניינים. תודה על השיתוף 🙂

      אני די חדש ב woocommerce ואני מחפש כבר זמן מה לבנות דף עם שתי שדות: מק"ט וכמות (ועם 10 שורות לדוגמא) ובסוף העמוד כפתור "הוסף לסל". המטרה היא לאפשר רכישה מהירה של מספר מוצרים מבלי לעבור בכל עמוד של מוצר.
      לא הצלחתי למצוא משהו כזה וגם לא פלאגאין ואשמח אם תוכל לכוון אותי איך ניתן לעשות את זה או לינק למקור מידע שאוכל לקרוא יותר איך לבנות דבר שכזה.

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

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

        בעיקרון אתה אמור להשתמש בפונקציה wc_get_product_id_by_sku ולהעביר לה את המק״ט של המוצר והיא תחזיר לך את ה-ID, ואז להשתמש בפונקציה WC()->cart->add_to_cart על מנת להוסיף את המוצר לעגלה.

    5. אליה

      תודה על המאמר
      יש תוסף לזה?

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

        היי אליה,
        כן, יש בראש הפוסט, כפתור להורדת קבצי המקור 🙂

    6. אליה

      דור קודם כל תודה רבה העלתי את התוסף וזה עובד מצוין
      יש אפשרות לערוך אותו?
      הוא מופיע בצמוד לכפתור הוסף לסל

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

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

    7. בן

      מאמר מעולה. שימושי מאוד!
      הכפתור מופיע לי באנגלית( ׁBUY NOW) יש דרך לעברת את זה?

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

        היי בן,
        בשלב הראשון אתה יכול לראות שרשום ״Boy Now״, פשוט תשנה את זה לטקסט הרצוי.

    8. רועי

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

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

        היי רועי,
        כמו שרשמתי ייתכן שבתבניות שונות זה יראה שונה, עם טיפה CSS תוכל להביא אותם לאותה השורה.

    9. אלון

      היי דור,

      מאמר מעולה, לא פחות!

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

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

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

      תודה 🙂

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

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

    10. רונית

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

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

        היי רונית,
        התייחסתי בתגובה הקודמת 🙂

    11. רונית

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

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

        היי רונית,
        את יכולה להעביר לפונצייה add_to_cart פרמטר שני שמתייחס לכמות, את הכמות את יכולה לקבל עם שימוש ב-qty.

    12. אלון

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

      את השורה הזאת לאחר השורה של ה-$product_id = absint( $_REQUEST['buy-now'] );

      $quantity = absint( $_REQUEST['qty'] );

      והשורה הזאת במקום השורה WC()->cart->add_to_cart( $product_id );

      WC()->cart->add_to_cart( $product_id, $quantity );

      אך לצערי זה לא עובד, האם אתה יכול לכוון אותי ללמה בבקשה?

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

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

      2. אלון

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

      3. דור צוברי

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

      4. אלון

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

      5. דור צוברי

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

        אם תצטרך עזרה, אני במרחק טופס צור קשר 🙂

    13. ניר

      מאמר מעולה דור!
      יש לי בעיה, כשאני מוסיף את הקוד של הדף מוצר והקוד של השלב השלישי נוסף לי הכפתור אבל כתוב בו גם הוספה לסל וגם buy now, אני רוצה גם ליצור לו class אחר כדי לעצב אותו בצבע שונה מהכפתור הוספה לסל שיש לי, איך אפשר לפתור את הבעיות?

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

        היי ניר,
        תודה רבה 🙂

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

    14. תמי

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

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

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

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

    15. שגיא

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

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

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

    16. חני

      היי,

      אפשר עדיין להוריד את התוסף?

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

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

    17. מאיר

      היי דור מאמר מחכים,
      אך עתה השתמשתי בקוד,
      אך משום מה, הוא לא שולח אותי לדף התשלום אוטו',
      יש לך מושג למה?

      בהערכה, ותודה.

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

        היי מאיר 👋,
        מה קורה כאשר לוחצים על הכפתור, יכול להיות שיש התנגשות עם תוסף כלשהו באתר שלך?

    18. Ri

      איך מורידים את הקוד כתוסף? לא מצאתי קישור

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

        היי 👋🏽,
        בקרוב אני אעדכן את הקישורים, ממליץ לך לעקוב 🙂

    19. מנחם

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

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

        היי מנחם 👋🏽,
        תודה רבה 🙂

        אתה יכול לבצע זאת ע״י שימוש ב-Hook הבא:

        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );

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

    שתפו