כנראה שנתקלתם באתרים מסויימים המספקים את משך זמן הקריאה המוערך של מאמר כזה או אחר. ביני לבין עצמי, כשראיתי זאת חשבתי שזה קצת מגוחך.
אך נתקלתי כבר במספר מאמרים המסבירים כי הצגת משך זמן הקריאה מגדילה את ה 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 מילים בדקה למרות שרוב הקוראים עושים זאת מהר יותר.
מה גם שלדעתי זמן הקריאה תלוי בסוג התוכן שאתה קורא, אם אתה צריך לנתח קוד או להתייחס לגרפים כאלו או אחרים ברור לנו שזמן הקריאה יהיה ארוך יותר. לאה כהן כתבה פוסט בבלוג זה ויצרה תוסף המציג את משך זמן הקריאה המוערך בפוסטים.
אלוף. יש מצב שאני אשתמש בזה.
אגב, היה ראוי שתטמיע את זה לפחות בפוסט הזה שנוכל לראות את הפונקציה בעבודה. 🙂
תודה דוד!
במקרה זה מאד מובן איך זה ייראה, אחרת הייתי משקיע יותר 😉
יש לי כמה דברים לומר על הפוסט הזה כי אהבתי את הפשטות שלו, אבל הכי חשוב שאלה לי: הרצת את זה על אתר בעברית? אני לא מדברת על סוגיית התרגום, אלא על התפקוד של פונקציית 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.
אז עניין אותי אם נתקלת בזה…
היי לאה 🙂
מעניין מאד, ואת צודקת מסתבר…. הפונקציה באמת אינה מחזירה את מספר המילים הרצוי. מחיפוש בגוגל נראה ש אם נחליף את שורה מספר 10 בקוד לשורה הבאה זה יפתור את העניין:
את יכולה לוודא שאוכל לתקן את הקוד?
בדקתי, ועובד. ישר כח!
אתה יודע, בהתחלה כשבדקתי את התיקון שלך, השוויתי את התוצאה עם מה שכתוב במסך העריכה של הפוסט בוורדפרס (בתחתית העורך כתוב מספר המלים שיש בפוסט), וראיתי שהמספר לא זהה אז חשבתי שמשהו בכל זאת שגוי גם בתיקון. אבל שנייה לפני שכתבתי לך את זה, החלטתי לבדוק בוורד (הרי גם שם יש ספירת מלים) וגיליתי שהפונקציה המתוקנת אכן מתאימה למספר שכתוב בוורד. אז כנראה היא באמת אחלה!
ועכשיו רק נשאלת השאלה מה הפונקציה שמסך העריכה משתמש בה…
מצויין! אשנה את הקוד בהתאם 🙂
לגבי מסך העריכה, זוהי לא פונקציית PHP אלא פונקציית Javascript שבודקת את מספר המילים. כפי שאת רואה היא משנה את מספר המילים ב live…
אז אתה מתקן את הקוד?
🙂
הקוד תוקן! 🙂 תודה שוב לאה..
מעולה. תשתף למה החלטת לא להטמיע אצלך בבלוג?
כי לך תעריך את זמן הקריאה בצורה הגיונית כשיש קוד מעורב במרבית הפוסטים… 🙂
היי רועי,
אחלה אתר.
בטיפשותי הרבה התקנתי את התוסף Reading Time WP כי רציתי לראות כמה זה נורא באתר ובקיצור זה שיבש לי הרבה דברים. שהסרתי את התוסף נותרו עדין הסימונים של דק' הקריאה.
איך ניתן לחזור אחורה ולמחוק כל זכר מהתוסף?
היי,
לא יכול להיות – אם מחקת את התוסף לא תראה זכר ממנו. תבדוק שנית, אולי זה זכרון מטמון (cache) שמדבר?