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

מדוע להוסיף כפתורי כמות?

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

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

צילום מסך של שדה כמות בעמוד מוצר בווקומרס

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

הוספת כפתורי פלוס ומינוס לעמוד מוצר

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

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

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

/**
 * Print plus button before quantity field.
 */
function dorzki_woocomerce_add_quantity_plus_button() {

	echo '<button type="button" class="qty-btn increase-qty">' .
			 '	<span class="screen-reader-text">' . esc_html__( 'Increase Quantity', 'dorzki' ) . '</span>' .
			 '	<span class="symbol">+</span>' .
			 '</button>';

}

add_action( 'woocommerce_before_add_to_cart_quantity', 'dorzki_woocomerce_add_quantity_plus_button' );


/**
 * Print minus button after quantity field.
 */
function dorzki_woocomerce_add_quantity_minus_button() {

	echo '<button type="button" class="qty-btn decrease-qty">' .
			 '	<span class="screen-reader-text">' . esc_html__( 'Decrease Quantity', 'dorzki' ) . '</span>' .
			 '	<span class="symbol">-</span>' .
			 '</button>';

}

add_action( 'woocommerce_after_add_to_cart_quantity', 'dorzki_woocomerce_add_quantity_minus_button' );

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

שלב שני – הוספת פונקציונליות לכפתורי כמות

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

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

(function( $ ) {

	$( 'form.cart .qty-btn' ).on( 'click', function( e ) {
		e.preventDefault();

		var _qty  = $( this ).parents( 'form.cart' ).find( '.qty' );

		var _val  = parseFloat( _qty.val() );
		var _step = parseFloat( _qty.attr( 'step' ) );
		var _min  = parseFloat( _qty.attr( 'min' ) );
		var _max  = parseFloat( _qty.attr( 'max' ) );

		var _newVal = 0;

		if( $( this ).hasClass( 'increase-qty' ) ) {

			_newVal = ( _val + _step <= _max || ! _max ) ? _val + _step : _max;

		} else {

			_newVal = ( _val - _step >= _min || ! _min ) ? _val - _step : _min;

		}

		_qty.val( _newVal );

	} );

} )( jQuery );

שלב שלישי – עיצוב כפתורי כמות

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

נפתח את קובץ העיצוב של תבנית הבת style.css ונכניס את הקוד הבא.

.single-product .product-type-simple form.cart,
.single-product .woocommerce-variation-add-to-cart {
	display: flex;
}

.single-product form.cart .quantity {
	margin: 0;
	float: none;
}

.single-product form.cart .quantity input {
	border-width: 1px 0;
}

.single-product form.cart .increase-qty {
	border-radius: 4px 0 0 4px;
}

.single-product form.cart .decrease-qty {
	border-radius: 0 4px 4px 0;
	margin-right: 10px;
}

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

צילום מסך של שדה כמות בעמוד מוצר בווקומרס עם כפתורי כמות

שלב רביעי – הסתרת חיצי שדה כמות (אופציונלי)

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

נפתח שוב את קובץ ה-CSS של תבנית הבת שלנו style.css ונדביק את הקוד הבא.

.single-product form.cart .quantity input::-webkit-inner-spin-button,
.single-product form.cart .quantity input::-webkit-outer-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

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

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

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

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

סיכום

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

    כתיבת תגובה

    1. רוב

      מאמר יפה, החלק -webkit-inner-spin-button מתייחס רק לכרום? מה אם שאר הדפדפנים?
      איך מונעים הזמנה של יותר מהכמות שיש במלאי? למשל למוצר יש מלאי של 4 יחידות אז אי אפשר להעלות את הכמות ליותר מ-4

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

        היי רוב,
        התכונה -webkit-inner-spin-button מתייחסת לכל דפדפן מסוג WebKit.

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

    2. עמית

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

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

        היי עמית 👋,
        לצערי אין קוד של המאמר הזה כתוסף.

    3. משה לוי

      מאמר יפה,איפה אני מגדיר את קוד הphp אפשר ב custom css?

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

        שלום משה,
        רשום לך במאמר שאת קוד ה-PHP אתה צריך להטמיע בקובץ functions.php של תבנית הבת שלך.

    4. אביב

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

      .minus:active{
          background-color: #ffff
          !important;
          color: #EE50FF
          !important; 
      }

      מה פספסתי?

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

        היי אביב,
        :active יותר רלוונטי לקישורים, מה שאתה צריך להשתמש בו זה :focus.

    5. מירי

      תודה רבה על המאמר המפורט
      רק הסתבכתי עם הוספת קובץ JS
      הלכתי למאמר השני כפי שרשמת
      העתקתי את השורות הבאות לפונקציה שכבר הייתה קיימת לי בקובץ FUNCTIONS עם קבצי הCSS
      זה השורות שהעתקתי:

      
      wp_enqueue_script( 'scrollex', get_template_directory_uri() . '/assets/js/jquery.scrollex.min.js', array( 'jquery' ), '0.2.1', true );
      wp_enqueue_script( 'skel', get_template_directory_uri() . '/assets/js/skel.min.js', false, '3.0.0', true );
      wp_enqueue_script( 'util', get_template_directory_uri() . '/assets/js/util.js', array( 'jquery' ), false, true );
      wp_enqueue_script( 'theme-script', get_template_directory_uri() . '/assets/js/main.js', array( 'scrollex', 'skel', 'util' ), '1.0.0', true );
      

      פתחתי תיקיית JS בתוך ASSETS
      ושם פתחתי את הקבצים שרשומים בשורות שהעתקתי
      ואת הקוד שמתייחס לכפתורים הוספתי לקובץ main.css
      אבל זה לא עובד בקונסול יש כמה שורות של שגיאות
      אשמח להכוונה איפה טעיתי
      תודה מראש!

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

        היי מירי 👋,
        שמת פה קוד של קבצי JavaScript, אך את מדברת על קובץ CSS.

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

    שתפו