כדי לשנות את המפריד (delimiter) בפירורי הלחם של WooCommerce, השתמשו בפילטר woocommerce_breadcrumb_defaults ושנו את המפתח delimiter. כברירת מחדל, WooCommerce מציג לוכסן (סלאש) עם רווח קשיח (non-breaking space) מכל צד.
להסבר על שאר הארגומנטים (wrap_before, wrap_after, before, after ו-home), כולל דוגמאות מעשיות, הציצו בסניפט שינוי והתאמה של פירורי הלחם ב-WooCommerce.
החלפת המפריד בפירורי הלחם
הוסיפו את הקוד הבא לקובץ functions.php של תבנית הבת שלכם, או לתוסף קטן משלכם:
/**
* Replace the WooCommerce breadcrumb delimiter with a vertical bar.
*/
function savvy_wc_breadcrumb_delimiter( $defaults ) {
$defaults['delimiter'] = ' | ';
return $defaults;
}
add_filter( 'woocommerce_breadcrumb_defaults', 'savvy_wc_breadcrumb_delimiter', 20 );
פירורי הלחם בעמוד מוצר יוצגו כעת כ-Home | Clothing | T-Shirt במקום Home / Clothing / T-Shirt.
איך זה עובד?
הפונקציה woocommerce_breadcrumb() בונה מערך של ערכי ברירת מחדל ומעבירה אותו דרך הפילטר woocommerce_breadcrumb_defaults. לאחר מכן, התבנית global/breadcrumb.php מדפיסה את המפריד בין הפירורים, אבל לא אחרי הפירור האחרון.
אלו ערכי ברירת המחדל בקוד המקור הנוכחי של WooCommerce (includes/wc-template-functions.php):
array(
'delimiter' => ' / ',
'wrap_before' => '<nav class="woocommerce-breadcrumb" aria-label="Breadcrumb">',
'wrap_after' => '</nav>',
'before' => '',
'after' => '',
'home' => _x( 'Home', 'breadcrumb', 'woocommerce' ),
)
שנו רק את המפתח delimiter והחזירו את כל השאר כפי שהוא. החזרה של מערך חדש לגמרי תמחק ערכים שלא התכוונתם לשנות, כמו אותו aria-label ש-WooCommerce הוסיף ל-wrap_before בגרסה 8.3.
וריאציות למפריד
המפריד מודפס כ-HTML גולמי (ללא escaping), כך שתוכלו להשתמש ב-entities, באלמנט מעוצב או ב-SVG כ-inline. הנה כמה אפשרויות נפוצות:
// Right-pointing angle: Home › Shop › Product
$defaults['delimiter'] = ' › ';
// Arrow: Home → Shop → Product
$defaults['delimiter'] = ' → ';
// A span you can style with CSS
$defaults['delimiter'] = '<span class="breadcrumb-sep" aria-hidden="true">/</span>';
גרסת ה-span היא הגמישה ביותר. הוסיפו aria-hidden="true" כדי שקוראי מסך ידלגו על התו הדקורטיבי, ולאחר מכן עצבו את .breadcrumb-sep ב-CSS של התבנית.
למה המפריד לא משתנה?
אם המפריד נשאר כפי שהיה אחרי הוספת הפילטר, הסיבה היא בדרך כלל אחת מאלו:
- התבנית Storefront (או תבנית אחרת) מגדירה מפריד משלה. Storefront מתחברת ל-
woocommerce_breadcrumb_defaults בעדיפות 10, שהיא ברירת המחדל, מתוך תבנית האב, שנטענת אחרי תבנית הבת שלכם. זו הסיבה שהסניפט למעלה משתמש בעדיפות 20.
- פירורי הלחם אינם של WooCommerce. Yoast SEO, Rank Math ותבניות רבות מדפיסים פירורי לחם משלהם, והפילטר הזה לא משפיע עליהם.
- ה-cache של העמוד מגיש HTML ישן. נקו את ה-cache וטענו את העמוד מחדש.
בתבניות בלוקים, הבלוק Store Breadcrumbs קורא ל-woocommerce_breadcrumb() מאחורי הקלעים, כך שאותו פילטר עובד גם שם. אם אתם רוצים דווקא להסתיר את פירורי הלחם בחלק מהעמודים, הציצו בסניפט הסרת פירורי הלחם של WooCommerce בעמודים מסוימים.
שאלות נפוצות
שאלות נפוצות על המפריד בפירורי הלחם של WooCommerce:
מהו הקו המפריד של פירורי הלחם ב-WooCommerce כברירת מחדל?
הערך הוא / , כלומר לוכסן עם רווח קשיח מכל צד. הוא מוגדר בפונקציה woocommerce_breadcrumb() וניתן לשנות אותו באמצעות הפילטר woocommerce_breadcrumb_defaults.
האם אפשר להשתמש ב-HTML או באייקון כקו מפריד?
כן. התבנית של פירורי הלחם מדפיסה את המפריד ללא escaping, כך ש-<span>, אלמנט של פונט אייקונים או SVG כ-inline יעבדו כולם. סמנו מפרידים דקורטיביים עם aria-hidden="true".
למה שינוי הקו המפריד לא עובד ב-Storefront?
Storefront מגדירה מפריד משלה על אותו פילטר בעדיפות 10, ותבנית האב נטענת אחרי תבנית הבת. רשמו את הפילטר שלכם בעדיפות גבוהה יותר, למשל 20, כך שהוא ירוץ אחרון.
האם שינוי הקו המפריד משפיע על ה-Schema של פירורי הלחם?
לא. WooCommerce בונה את הנתונים המובנים מסוג BreadcrumbList ממערך הפירורים ולא מה-HTML המרונדר, כך שלמפריד אין השפעה על ה-Schema.