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

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

ביני לבין עצמי, כשראיתי זאת חשבתי שזה קצת מגוחך. אך נתקלתי כבר במספר מאמרים המסבירים כי הצגת משך זמן הקריאה מגדילה את ה 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 מילים בדקה למרות שרוב הקוראים עושים זאת מהר יותר. מה גם שלדעתי זמן הקריאה תלוי בסוג התוכן שאתה קורא, אם אתה צריך לנתח קוד או להתייחס לגרפים כאלו או אחרים ברור לנו שזמן הקריאה יהיה ארוך יותר.

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

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

{ 8 תגובות… הוסף אחת }
  • דוד ארוון 17 בדצמבר 2017, 10:21

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

  • לאה 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

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

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

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

השאירו תגובה

פעימות
Up!
לאפס את הלולאה של וורדפרס
3 דרכים לאפס את הלולאה של וורדפרס

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