איך להסתיר שדות בעמוד תשלום בווקומרס?

שיתוף

שיתוף ב facebook
שיתוף ב google
שיתוף ב twitter
שיתוף ב linkedin

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

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

והפתרונות הם כמובן פתרונות מאוד קלים ליישום…

פתרון אחד דורש התקנת תוסף שמאפשר לנו להסיר שדות קיימים.

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

אילו שדות למשל יש בווקומרס שמגיעים בהתקנה ולא משתמשים בהם?

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

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

למה בכלל שאני ארצה להוריד שדות מעמוד התשלום? מה אכפת לי שהם שם?

ככל שאנחנו נדרוש מהלקוח יותר שדות למילוי, ככה אחוזי ההמרה שלנו ירדו.

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

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

אנחנו נתחיל בדרך הקלה יותר, הדרך שכוללת התקנת תוסף שיעשה בשבילנו את העבודה הקשה…

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

במקרה שלנו אני אקח את התוסף עם הכי הרבה התקנות, שהוא כרגע עם מעל ל100,000 התקנות פעילות ו103 חוות דעת עם ציון גבוה, שם התוסף הוא:
Checkout Field Editor (Checkout Manager) for WooCommerce​

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

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

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

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

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

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

האופציה השניה היא למתקדמים יותר…

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

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

הבנתי את הסיכונים, בוא נקפוץ ישירות לקוד...

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

פונקציה זו מקבלת פונקציה בשם unset, שכשמה כן היא, הורדה מרישום, במקרה הזה, שדה שנמצא במערך $my_fields.

המערך מקבל שני משתנים:

המשתנה הראשון (במקרה שלנו "Billing"), הוא השם של המשתנה שאחראי על שדות החיוב בטופס התשלום.

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

הפונקציה תראה ככה:

function remove_my_woocommerce_checkout_fields ( $my_fields ) { 

unset($my_fields['Billing']['billing_company']);

return $my_fields;

}

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

הפילטר מקבל שני משתנים:

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

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

לכן הפילטר שלנו יראה ככה:

add_filter( 'woocommerce_checkout_fields' , 'remove_my_woocommerce_checkout_fields' );

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

  • Billing
    • billing_first_name
    • billing_last_name
    • billing_company
    • billing_address_1
    • billing_address_2
    • billing_city
    • billing_postcode
    • billing_country
    • billing_state
    • billing_email
    • billing_phone
  • Shipping
    • shipping_first_name
    • shipping_last_name
    • shipping_company
    • shipping_address_1
    • shipping_address_2
    • shipping_city
    • shipping_postcode
    • shipping_country
    • shipping_state
  • Account
    • account_username
    • account_password
    • account_password-2
  • Order
    • order_comments

מגניב! אבל מה אם אני רוצה להסיר יותר משדה אחד?

זה מאוד פשוט, בתוך הפונקציה remove_my_woocommerce_checkout_fields, אנחנו נוסיף שורה חדשה ובה הפונקציה unset, ששוב מקבלת את אותם הפרמטרים אך עם השמות החדשים של השדות (לדוגמא: Billing ובתוכו billing_addres_2 כדי להוריד את שורת הכתובת השניה).

ומה עוד אפשר לעשות עם הפילטר הזה למשל?

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

function change_my_woocommerce_checkout_fields_placeholders ( $my_fields ) {
$my_fields['Billing']['billing_company']['placeholder'] = 'Another Placeholder Text';return $my_fields;}

 

 

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

add_filter( 'woocommerce_checkout_fields' , 'change_my_woocommerce_checkout_fields_placeholders' );

ויש עוד רשימה של דברים שאנחנו יכולים לשנות בהקשר לכל שדה (ניתן להגדיר את הערכים האלה באותה תצורה בה ששינינו את הplaceholder שלנו):

type – סוג השדה
label – כותרת השדה
placeholder – טקסט זמני בשדה
class – קלאס השדה
required – חובה או לא?
label_class – הגדרת הקלאס לתווית של השדה

יש רק דבר אחד שחייב להזכיר בנושא של השדות

יש שדות מסוימים שהם השדות ברירת המחדל הבסיסי של ווקומרס – השדות הם:

country | first_name | last_name | company | address_1 | address_2 | city | state | postcode

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

בשדות אלה אנחנו נתחבר לפילטר woocommerce_default_address_fields ונבטל בו את הדרישת חובה של שדות אלה.

לסיכום:

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

מהם השדות שאתם מורידים בשניה הראשונה בה אתם מתחילים להתעסק עם הווקומרס?