הוספת קישור לפירורי הלחם של Yoast SEO

הפילטר wpseo_breadcrumb_links מאפשר לכם להוסיף פריטים, להסיר פריטים או לשנות את הסדר שלהם בפירורי הלחם של Yoast SEO. דוגמה נפוצה היא הוספת קישור לבלוג מיד אחרי הקישור לעמוד הבית בעמודי פוסט בודד, כך שהתוצאה תהיה: Home › Blog › Post title.

אם אתם רוצים להסיר את הנתונים המובנים של פירורי הלחם, ראו את הסרת סכמת פירורי הלחם ב-Yoast. כדי לבטל את סכמת Yoast כולה, ראו ביטול סכמת Yoast SEO.

הקוד

הוסיפו את הקוד לקובץ functions.php בתבנית הבת שלכם או לתוסף ייעודי. עדכנו את הכתובת ואת הטקסט כך שיתאימו לעמוד הבלוג שלכם:

function yoast_seo_breadcrumb_append_link( $links ) {
    if ( ! is_singular( 'post' ) ) {
        return $links;
    }

    $breadcrumb[] = array(
        'url'  => home_url( '/blog/' ),
        'text' => 'Blog',
    );

    array_splice( $links, 1, 0, $breadcrumb );

    return $links;
}
add_filter( 'wpseo_breadcrumb_links', 'yoast_seo_breadcrumb_append_link' );

כיצד זה עובד

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

כל פריט הוא מערך עם url ו-text. בנוסף, Yoast מוסיף מפתח שמזהה את סוג הפריט: id לפוסטים ולעמודים, term_id ו-taxonomy למונחים, ו-ptarchive לארכיוני סוגי תוכן.

הקריאה array_splice( $links, 1, 0, $breadcrumb ) מכניסה את הפריט החדש במיקום 1, מיד אחרי עמוד הבית, בלי להסיר שום פריט. הארגומנט השלישי חייב להיות 0. כל ערך אחר (למשל -2) ימחק בלי התרעה פריטים מרשימות פירורי לחם ארוכות יותר.

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

אותו מערך משמש גם לפירורי הלחם הגלויים וגם לסכמת ה-BreadcrumbList של Yoast, כך שהפריט החדש יופיע גם בנתונים המובנים.

בדקו קודם את ההגדרה המובנית

אם עמוד הבית שלכם מוגדר כעמוד סטטי והגדרתם ״Posts page״ תחת ״הגדרות > קריאה״, יכול להיות שלא תצטרכו קוד בכלל.

תחת ״Yoast SEO > Settings > Advanced > Breadcrumbs״, ההגדרה Show blog page in breadcrumbs מוסיפה את אותו עמוד לפירורי הלחם בפוסטים בודדים.

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

דוגמאות נוספות ל-wpseo_breadcrumb_links

הגרסה הבאה מוסיפה עמוד מרכזי (hub) לפני הפריט הנוכחי בסוג תוכן מותאם. היסט (offset) שלילי נספר מהסוף, כך ש--1 ממקם אותו מיד לפני הפריט האחרון:

add_filter( 'wpseo_breadcrumb_links', function( $links ) {
    if ( ! is_singular( 'snippet' ) ) {
        return $links;
    }

    $new_crumb = array(
        array(
            'url'  => home_url( '/resources/' ),
            'text' => 'Resources',
        ),
    );

    array_splice( $links, -1, 0, $new_crumb );

    return $links;
} );

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

add_filter( 'wpseo_breadcrumb_links', function( $links ) {
    foreach ( $links as $i => $link ) {
        if ( isset( $link['taxonomy'] ) && 'category' === $link['taxonomy'] ) {
            unset( $links[ $i ] );
        }
    }
    return array_values( $links );
} );

כמה כללים לשימוש בטוח בפילטר:

  • החזירו תמיד מערך. Yoast מתעלם מכל ערך אחר ורושם הודעת ״doing it wrong״.
  • הקפידו שלכל פריט יהיו גם url וגם text. אם אחד מהם חסר, Yoast לא ידפיס את סכמת ה-BreadcrumbList באותו עמוד.
  • Yoast מדפיס את text כפי שהוא, לכן עטפו ערכים דינמיים כמו כותרות פוסטים ב-esc_html().

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

שאלות נפוצות

הנה כמה שאלות נפוצות על הפילטר wpseo_breadcrumb_links:

האם wpseo_breadcrumb_links משנה גם את סכמת פירורי הלחם?
כן. Yoast בונה גם את פירורי הלחם ב-HTML וגם את ה-JSON-LD של BreadcrumbList מאותו מערך מסונן. פילטרים כמו wpseo_breadcrumb_single_link ו-wpseo_breadcrumb_output משנים רק את ה-HTML.
האם יש שורטקוד לפירורי הלחם של Yoast?
כן, [wpseo_breadcrumb]. בקבצי תבנית PHP השתמשו ב-yoast_breadcrumb( '<p id="breadcrumbs">', '</p>' ), שמדפיס רק כאשר ההגדרה ״Enable breadcrumbs for your theme״ פעילה או כאשר התבנית מצהירה על תמיכה בפירורי הלחם. הפילטר חל על כל האפשרויות האלו.
למה הפריט החדש לא מופיע בפירורי הלחם?
ודאו שההתניה שלכם תואמת לעמוד (למשל is_singular( 'post' ) לא תרוץ בעמודים), שהפונקציה מחזירה את $links, ונקו את ה-cache של העמודים. כמו כן, ודאו שפירורי הלחם בעמוד אכן מגיעים מ-Yoast ולא מהתבנית או מ-WooCommerce.
דיון ותגובות
[  0 תגובות  ]

השאירו תגובה

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