הוספת כפתור רכישה מהירה בחנות יכולה לחסוך לגולש בחנות זמן יקר, מכיוון שהוא חוסך לו את ה-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.
סיכום
כפתור רכישה מהירה יכול לחסוך לגולשים שלכם הרבה זמן, במיוחד אם הגולש יודע איזה מוצר הוא רוצה לרכוש, ע״ שימוש בכפתור זה נוכל להקל על הגולש ולחסוך לו את כל התהליך המייגע של רכישה רגילה.
בדיוק התחלתי פרוייקט שצריך את הפונקציונאליות הזו. חסכת לי את החיפוש והמחקר.
שמח לשמוע רמי!
נהדר. בדיוק חושב על הקמת דף מוצר בוורדפרס עם הצורך הזה.
למעשה אני רוצה להקים דף נחיתה בודד עם אפשרות רכישה מהירה של מוצר יחיד.
אשמח לדעת אם יש לך דוגמא לדף מוצר פעיל כדי לראות איך זה עובד ממש?
היי מאיר,
לצערי אין לי איך להראות לך את זה, אני לא חושף פרטים אודות הלקוחות שלי.
אתה מוזמן להתקין את התוסף באתר שלך ולראות את זה 🙂
תודה רבה!
עזר לי מאד
היי רחל!
שמח לשמוע שהמאמר עזר לך, אם יש לך רעיונות למאמרים נוספים מוזמנת לשלוח לי ואכתוב עליהם.
בנוסף, מזמין אותך להירשם לעדכונים במייל או בטלגרם 🙂
הי דור,
נתקלתי ממש במקרה באתר שלך ומצאתי בו חומרים ממש מעניינים. תודה על השיתוף 🙂
אני די חדש ב woocommerce ואני מחפש כבר זמן מה לבנות דף עם שתי שדות: מק"ט וכמות (ועם 10 שורות לדוגמא) ובסוף העמוד כפתור "הוסף לסל". המטרה היא לאפשר רכישה מהירה של מספר מוצרים מבלי לעבור בכל עמוד של מוצר.
לא הצלחתי למצוא משהו כזה וגם לא פלאגאין ואשמח אם תוכל לכוון אותי איך ניתן לעשות את זה או לינק למקור מידע שאוכל לקרוא יותר איך לבנות דבר שכזה.
היי אבי,
שמח לשמוע שאתה אוהב את המאמרים שמתפרסמים בבלוג, מזמין אותך להירשם לעדכונים דרך הערוץ הטלגרם של הבלוג או דרך הטופס הרשמה לניוזלטר פה בצד 🙂
בעיקרון אתה אמור להשתמש בפונקציה
wc_get_product_id_by_sku
ולהעביר לה את המק״ט של המוצר והיא תחזיר לך את ה-ID, ואז להשתמש בפונקציהWC()->cart->add_to_cart
על מנת להוסיף את המוצר לעגלה.תודה על המאמר
יש תוסף לזה?
היי אליה,
כן, יש בראש הפוסט, כפתור להורדת קבצי המקור 🙂
דור קודם כל תודה רבה העלתי את התוסף וזה עובד מצוין
יש אפשרות לערוך אותו?
הוא מופיע בצמוד לכפתור הוסף לסל
היי אליה,
אתה מוזמן לערוך את התוסף כאוות נפשך, התוסף לא מפורסם במאגר של וורדפרס אז לא יהיו לו עדכונים.
מאמר מעולה. שימושי מאוד!
הכפתור מופיע לי באנגלית( ׁBUY NOW) יש דרך לעברת את זה?
היי בן,
בשלב הראשון אתה יכול לראות שרשום ״Boy Now״, פשוט תשנה את זה לטקסט הרצוי.
היי, משום מה כפתור הקנייה המהירה לא נמצא ממש ליד כפתור ההוספה לסל, אלא שורה וחצי מתחת (גם בעמוד הקטגוריה וגם בעמוד המוצר..יש מה לעשות עם זה?
היי רועי,
כמו שרשמתי ייתכן שבתבניות שונות זה יראה שונה, עם טיפה CSS תוכל להביא אותם לאותה השורה.
היי דור,
מאמר מעולה, לא פחות!
שאלה – אני עובד עם אלמנטור פרו ובניתי פופ-אפ שעולה עם הוספת מוצר לסל. בדף הקטגוריות הפופאפ עולה ונשאר את הזמן הרצוי לאחר שסימנתי בתוסף הווקומרס את:
הפעל אפשרות כפתור AJAX של "הוסף לעגלת הקניות" בעמוד ארכיון המוצרים
הבעיה היא שזה לא תופס לדף מוצר ספציפי וכל לחיצה על הוספה לסל מרפרש את העמוד והפופ-אפ נעלם מיד. האם יש אפשרות שהדף לא יתרפרש במוצר?
תודה 🙂
היי אלון,
שמח לשמוע שהמדריך עזר לך 🙂
צריך לעשות שינויים בקוד על מנת לבצע את הבקשה כבקשת AJAX.
היי דור מאמר יפה מאוד.
אני רוצה שיתווסף לי הכמות שהקונה בחר מאותו מוצר וישמר לי כאשר יגיע לסל,
איפה אני מוסיפה את הפונקציה הזאת?
היי רונית,
התייחסתי בתגובה הקודמת 🙂
אני יסביר, כרגע אם אני מוסיפה את הפונקציות כמו שהם אז למשל אם בחרתי בכמות 5 יחידות אז זה מאפס לי את הבחירה ליחידה אחת, איך אני שומרת את כל הנתונים שהקונה בוחר כולל כמות וכולל תוספות שונות…?
היי רונית,
את יכולה להעביר לפונצייה
add_to_cart
פרמטר שני שמתייחס לכמות, את הכמות את יכולה לקבל עם שימוש ב-qty
.היי, אני גם מעוניין שיהיה אפשר לקנות בכמות (לדוג' לבחור כמות של 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 );
אך לצערי זה לא עובד, האם אתה יכול לכוון אותי ללמה בבקשה?
נשמע מוזר, זה אמור לעבוד לך, הפרמטר השני הוא כמות.
מה קורה כאשר אתה לוחץ על ״קנה עכשיו״?
הכפתור ממשיך להתנהג כרגיל ומוביל לקנייה של רק אחד מהמוצר, ניסיתי עוד כמה וריאציות והכפתור או שומר על הפונקציונאליות המקורית או נשבר
אוקיי, זה נשמע מוזר, אם תרצה שאטפל לך בזה, מוזמן לפנות דרך טופס הצעת המחיר לצורך קבלת הצעת מחיר 🙂
חשבתי שזה מסתכם בהוספת שורה אחת, שתיים לקוד, אני כבר אמצא דרך אחרת לפתור זאת
זה אמור להיות רק שורה אחת כמו שכתבת, אבל אם זה לא עובד אני צריך להסתכל למה לא עובד לך, ומדובר פה על זמן עבודה 🙂
אם תצטרך עזרה, אני במרחק טופס צור קשר 🙂
מאמר מעולה דור!
יש לי בעיה, כשאני מוסיף את הקוד של הדף מוצר והקוד של השלב השלישי נוסף לי הכפתור אבל כתוב בו גם הוספה לסל וגם buy now, אני רוצה גם ליצור לו class אחר כדי לעצב אותו בצבע שונה מהכפתור הוספה לסל שיש לי, איך אפשר לפתור את הבעיות?
היי ניר,
תודה רבה 🙂
אתה צריך ידע בסיסי בקוד בשביל להתעסק עם זה, במידה ואתה מעוניין בשינויים אתה מוזמן להשאיר פרטים בטופס צור קשר ואדאג לשלוח לך הצעת מחיר.
מאמר מעולה
אשמח להבין איך ניתן להוסיף כפתור כזה כשבונים עמוד קטגוריה דרך טמפלייט באלמנטור.
תודה
שלום תמי,
אם את מוסיפה את הקוד לאתר שלך, זה אמור להופיע לבד בעמוד קטגוריה.
לא ניתן להוסיף כפתור כזה באלמנטור, זה משהו שאמור להיות חיצוני לאלמנטור.
בעיה קטנה..
קנה עכשיו בעמוד ארכיון לא מוסיף את המוצר לסל קניות ככה שאמנם הוא מפנה לעמוד התשלום אבל אין מוצרים לשלם עליהם.
בעמוד המוצר עצמו דווקא עובד יפה.
אהלן שגיא 👋,
נשמע לי מוזר, הקוד נבדק ועובד, יכול להיות שאולי יש התנגשות עם התבנית שלך או אחד התוספים שמותקנים? 🤔
היי,
אפשר עדיין להוריד את התוסף?
היי חני,
מתנצל על המענה המאוחר, ניתן להוריד את התוסף בקישור הבא.
היי דור מאמר מחכים,
אך עתה השתמשתי בקוד,
אך משום מה, הוא לא שולח אותי לדף התשלום אוטו',
יש לך מושג למה?
בהערכה, ותודה.
היי מאיר 👋,
מה קורה כאשר לוחצים על הכפתור, יכול להיות שיש התנגשות עם תוסף כלשהו באתר שלך?
איך מורידים את הקוד כתוסף? לא מצאתי קישור
היי 👋🏽,
בקרוב אני אעדכן את הקישורים, ממליץ לך לעקוב 🙂
מאמר מעולה תודה.
איך ניתן להסיר את הכפתור הוסף לסל? הצלחתי להוסיף את הכפתור קנה עכשיו אבל אין לי צורך להציג גם את הכפתור הוסף לסל.
בעמוד מוצר יחיד.
היי מנחם 👋🏽,
תודה רבה 🙂
אתה יכול לבצע זאת ע״י שימוש ב-Hook הבא: