הצגת מאמרים רלוונטים (Related Posts) ללא תוסף

נראה כיצד להוסיף מאמרים רלוונטים באתר וורדפרס ללא תוסף.

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

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

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


יתרונות השימוש במאמרים רלוונטים

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

  • הם משפרים את חווית המשתמש – הצגת מאמרים רלוונטים היא דרך שאינה חודרנית ומאד נוחה עבור המשתמשים שלכם לגלות מאמרים הרלוונטים לתחום העניין שלהם.
  • הם עוזרים לקידום האתר – אופטימיזציה למנועי חיפוש (search enging optimization) זה המפתח לנראות של האתר שלכם בתוצאות החיפוש. חלק בלתי נפרד מאופטימיזציה זו היא אסטרטגיית קישורים פנימיים (Internal Linking). אותם מאמרים רלוונטים עוזרים לכם בבנייה של אותם קישורים פנימיים בצורה אוטומטית ועוזרים למנועי החיפוש להבין את מבנה האתר שלכם.
  • הם מקטינים את שיעור הנטישה (bounce rate) – כולנו מנסים להקטין את אחוזי הנטישה באתר שלנו. ישנו סיכוי גבוה יותר כי גולשים בעלי עניין בתוכן מסויים, יילחצו על אותם קישורים ומכאן שיקטינו את אחוז הנטישה ויישארו באתר שלכם זמן רב יותר.
  • הם מאפשרים גישה לתוכן ישן – אם אתם מוסיפים תוכן בתדירות גבוהה לבלוג שלכם, התוכן הישן ״ייקבר״ מהר מאד בדפים האחרונים של הבלוג אליהם הגולשים אינם מגיעים בדרך כלל. הוספת מאמרים רלוונטים בסוף כל פוסט היא דרך מצויינת להציג את אותו תוכן חבוי עבור הגולשים שלכם.

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

הצטרפו לרשימת התפוצה!

הוספת מאמרים רלוונטים לתבנית

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

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


/**
 * Related posts
 * 
 * @global object $post
 * @param array $args
 * @return
 */
function wcr_related_posts($args = array()) {
    global $post;

    // default args
    $args = wp_parse_args($args, array(
        'post_id' => !empty($post) ? $post->ID : '',
        'taxonomy' => 'category',
        'limit' => 3,
        'post_type' => !empty($post) ? $post->post_type : 'post',
        'orderby' => 'rand'
    ));

    // check taxonomy
    if (!taxonomy_exists($args['taxonomy'])) {
        return;
    }

    // post taxonomies
    $taxonomies = wp_get_post_terms($args['post_id'], $args['taxonomy'], array('fields' => 'ids'));

    if (empty($taxonomies)) {
        return;
    }

    // query
    $related_posts = get_posts(array(
        'post__not_in' => (array) $args['post_id'],
        'post_type' => $args['post_type'],
        'tax_query' => array(
            array(
                'taxonomy' => $args['taxonomy'],
                'field' => 'term_id',
                'terms' => $taxonomies
            ),
        ),
        'posts_per_page' => $args['limit'],
        'orderby' => $args['orderby'],
        'order' => $args['order']
    ));

    include( locate_template('related-posts-template.php', false, false) );

    wp_reset_postdata();
}

השלב השני הוא ליצור קובץ בשם related-posts-template.php עם הקוד הבא:

<?php if (!empty($related_posts)) { ?>
    <div class="related-posts">
        <h3 class="widget-title"><?php _e('Related articles', 'textdomain'); ?></h3>

        <ul class="related-posts-list">
            <?php
            foreach ($related_posts as $post) {
                setup_postdata($post);
            ?>
            <li>
                <a class="title" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                    <?php if (has_post_thumbnail()) { ?>
                    <div class="thumb">
                        <?php echo get_the_post_thumbnail(null, 'medium', array('alt' => the_title_attribute(array('echo' => false)))); ?>
                    </div>
                    <?php } ?>
                    <h4><?php the_title(); ?></h4>
                </a>
            </li>
            <?php } ?>
        </ul>
        <div class="clearfix"></div>
    </div>
<?php
}

שימו לב כי יש להחליף את textdomain בשורה מספר 3 ל textdomain של התבנית שלכם.

אם תשאירו את ה textdomainכפי שהוא, לא תוכלו לתרגם את הטקסט "Related Articles" בדרך המקובלת. עם זאת, כמובן שיש באפשרותכם לשנות את הטקסט בקוד עצמו לאיזה טקסט שתבחרו – במקרה שלנו ״מאמרים רלוונטים״.

השלב שלישי הוא לקרוא לפונקציה wcr_related_posts() היכן שתרצו בתבנית שלכם, בדרך כלל תרצו להוסיף אותה בקובץ single.phpלאחר הקריאה ל the_content().

הארגומנטים בהם ניתן להשתמש

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

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

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

הצגת מאמרים רלוונטים – דוגמאות שימוש

הצגת שלושה מאמרים רלוונטים:

<?php wcr_related_posts(); ?>

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

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

<?php
wcr_related_posts(array(
	'limit' => 6
));
?>

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

<?php 
wcr_related_posts(array(
   'taxonomy' => 'post_tag',
));
?>

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

<?php 
wcr_related_posts(array(
   'limit' => 6,
   'orderby' => 'comment_count',
   'order' => 'ASC'
));
?>

תנו מבט באפשרויות סידור (orderby) נוספות ב WordPress Codex.

הצגת המאמרים עבור סוג תוכן מותאם:

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

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

<?php
wcr_related_posts(array(
    'taxonomy' => 'teams'
));
?>

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

 לסיכום

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

The actual code is taken from WPcrumbs.

 

רועי יוסף
רועי יוסף

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

{ 6 תגובות… הוסף אחת }
  • רונית 17 בפברואר 2018, 22:26

    פוסט מעולה, תודה!

  • חתול 18 בפברואר 2018, 17:58

    במקום להכניס את הפונקציה לתוך התבנית עדיף להפריד את התוכן מהעיצוב ולהשתמש בפילטר על the_content. ואולי כדאי להשתמש בארגומנט order=rand בשביל לקבל פוסטים קשורים אקראיים.

    • רועי יוסף 18 בפברואר 2018, 18:28

      אתה לגמרי צודק לגבי order=rand, שיניתי את הקוד בהתאם. לגבי שימוש בפילטר, אני לא חושב שזה נכון במקרה זה:

      1. זה מסרבל את הקוד כי צריך להכניס את הקוד לתוך משתנה עקב השימוש ב return.
      2. לדעתי נכון יותר להוסיף את הפונקציה בתבנית העמוד (page template) מכיוון וזה פשוט יסרבל את העניין. לדוגמה, תאלץ להוסיף תנאים באילו סוגי תוכן (post type) להשתמש בפילטר ובאילו לא… מה אם תחליט לא להוסיף אותם בדיוק בסיום תוכן הפוסט? עדיף במקרה זה פשוט להוסיף את אותם related posts במיקום בו אתה מעוניין.

  • מיכל הררי 20 בפברואר 2018, 12:48

    אוי, מעולה! תודה רועי. בדיוק צריכה את זה. חסכת לי עבודת מחקר רצינית 😉

השאירו תגובה

פעימות
הדרך הנכונה להוסיף סקריפטים בממשק הניהול של וורדפרס
הדרך הנכונה לטעון סקריפטים בממשק הניהול של וורדפרס

כבר נכתב פוסט על הדרך הנכונה להוסיף נכסים (קבצי Javascript וקבצי CSS) בוורדפרס. זוהי פעולה...