Search

הצגת משך זמן הקריאה המוערך של פוסט באתרי וורדפרס

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

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

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

הצגת משך זמן הקריאה המוערך

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

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

/**
 * Estimate time to read the article
 *
 * @return string
 */
function savvy_estimated_reading_time() {

	$post = get_post();

    $words = count(preg_split('/\s+/', strip_tags( $post->post_content )));
	$minutes = floor( $words / 200 );
	$seconds = floor( $words % 200 / ( 200 / 60 ) );

	if ( 1 <= $minutes ) {
		$estimated_time = ($minutes == 1 ? ' דקה אחת' : $minutes . 'דקות' ) . ' ו' . ($seconds == 1 ? 'שנייה אחת' :  $seconds . ' שניות' );
	} else {
		$estimated_time = $seconds . ' שניות';
	}

	return $estimated_time;

}

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

<?php echo savvy_estimated_reading_time(); ?>

שימו לב כי השתמשנו בפונקציית php בשם strip_tags() בכדי להסיר תגי html ו php מהחישוב של מספר המילים.

לפי מה מבוצע החישוב?

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

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

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

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

12 תגובות...
  • דוד ארוון 17 דצמבר 2017, 10:21

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

    • רועי יוסף 17 דצמבר 2017, 17:18

      תודה דוד!

      במקרה זה מאד מובן איך זה ייראה, אחרת הייתי משקיע יותר 😉

  • לאה 30 דצמבר 2017, 22:18

    יש לי כמה דברים לומר על הפוסט הזה כי אהבתי את הפשטות שלו, אבל הכי חשוב שאלה לי: הרצת את זה על אתר בעברית? אני לא מדברת על סוגיית התרגום, אלא על התפקוד של פונקציית str_word_count. כשראיתי את הפונקציה הזאת תהיתי אם יש לה מקבילה של mb_ כמו שיש לשאר פונקציות המחרוזת של PHP (הכוונה היא לווריאציות המותאמות לתווים שאינם ASCII כלומר תווים שתופסים יותר מבייט אחד.

    הקידומת של הפונקציות הללו היא mb_ מלשון multi byte. אפשר לקרוא על זה עוד כאן: http://php.net/manual/en/ref.mbstring.php).

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

    יש על זה דיון כאן:

    https://stackoverflow.com/questions/13884178/str-word-count-function-doesnt-display-arabic-language-properly/13884355#13884355

    וכאן:

    https://github.com/wallabag/wallabag/issues/2147
    וגם בקשה – שטרם נענתה – ש-PHP תיצור מקבילה בשם mb_str_word_count, כמו המקבילות שיש לשאר פונקציות המחרוזת ב-PHP.

    אז עניין אותי אם נתקלת בזה…

    • רועי יוסף 30 דצמבר 2017, 22:31

      היי לאה 🙂

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

      $words = count(preg_split('/\s+/', strip_tags( $post->post_content )));
      

      את יכולה לוודא שאוכל לתקן את הקוד?

  • לאה 30 דצמבר 2017, 22:40

    בדקתי, ועובד. ישר כח!

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

    ועכשיו רק נשאלת השאלה מה הפונקציה שמסך העריכה משתמש בה…

    • רועי יוסף 30 דצמבר 2017, 22:46

      מצויין! אשנה את הקוד בהתאם 🙂

      לגבי מסך העריכה, זוהי לא פונקציית PHP אלא פונקציית Javascript שבודקת את מספר המילים. כפי שאת רואה היא משנה את מספר המילים ב live…

  • מיכל כהן 15 יוני 2020, 12:57

    מעולה. תשתף למה החלטת לא להטמיע אצלך בבלוג?

    • רועי יוסף 15 יוני 2020, 13:41

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

  • kibi 12 נובמבר 2020, 13:28

    היי רועי,
    אחלה אתר.
    בטיפשותי הרבה התקנתי את התוסף Reading Time WP כי רציתי לראות כמה זה נורא באתר ובקיצור זה שיבש לי הרבה דברים. שהסרתי את התוסף נותרו עדין הסימונים של דק' הקריאה.
    איך ניתן לחזור אחורה ולמחוק כל זכר מהתוסף?

תגובה חדשה

Up!
לבלוג