בוריס שאל בקבוצת הדיון איך לייצר עמוד ראשי דומה לשלי, בו חלק מהפוסטים מופיעים במלואם וחלקם חתוכים.
הוא חשב על שימוש ב-more ואני הפניתי אותו לפוסט טיפ SEO ותוסף
השאלה הבאה שלו הייתה איך הוא מוסיף לכל תקציר כזה גם קישור להמשך הפוסט ואני הבטחתי להסביר כאן ![]()
נתחיל מהנקודה בה סיימנו את הפוסט הקודם, לפנינו הקוד הבא:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $i=0; if (have_posts()) : while (have_posts()) : the_post(); ?> <h1><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h1> <p class="details">נשלח <?php the_time('j F, Y'); ?> - נושאים <?php the_category(', ') ?> | <?php comments_popup_link('ללא מילים', 'תגובה אחת', '% תגובות'); ?></p> <?php if ($i <=3) the_content(__('המשך')); else the_excerpt(__('המשך')); ++$i; ?> <?php endwhile; else: ?> <p><?php _e('לא מצאתי את מה שחיפשת.'); ?></p> <?php endif; ?> <?php posts_nav_link(' — ', __('« בחזרה'), __('להמשך חיפוש »')); ?> |
זהו למעשה הקוד העיקרי של דף הבית שלי מה שמכונה the_loop.
כאמור בפוסט אליו הפניתי הקוד הזה מציג את ארבעת הפוסטים הראשונים בשלמותם ואת הבאים אחריהם חלקיים על ידי שימוש לסירוגין בפונקציות the_content ו-the_excerpt.
the_content היא פונקציה המדפיסה את כל התוסן של פוסט מסויים, לעומתה the_excerpt מדפיסה רק תקציר – אם הוזן ואם לא את 100 התווים הראשונים של הפוסט בלא לחתוך מילים. פונקציות אלו מאפשרות לנו להציג בקלות פוסטים מלאים או חלקיים לרצוננו בלא להשתמש ב-More שחותך את ערוץ ה-RSS של הבלוג ולא רק את הצגת הפוסטים.
כאמור, מה שביקש בוריס היה להוסיף קישור לאחר הפוסט כאשר אינו מוצג במלואו. לשם כך נשתמש בפונקציה the_permalink בה כבר משתמשים בכותרת כל פוסט, פונקציה זו מייצרת לנו קישור ישיר לפוסט.
למעשה נוסיף לשימוש את הקוד הבא:
1 | <a href='<? the_permalink(); ?>' rel='bookmark' class='more'>להמשך קריאה »</a> |
שייצר לנו קישור שייראה כך להמשך קריאה ».
הקוד המלא לאחר השינוי ייראה כך:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $i=0; if (have_posts()) : while (have_posts()) : the_post(); ?> <h1><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h1> <p class="details">נשלח <?php the_time('j F, Y'); ?> - נושאים <?php the_category(', ') ?> | <?php comments_popup_link('ללא מילים', 'תגובה אחת', '% תגובות'); ?></p> <?php if ($i <=3) the_content(__('המשך')); else { the_excerpt(__('המשך'));?> <a href='<? the_permalink(); ?>' rel='bookmark' class='more'>להמשך קריאה »</a> < ? } ++$i; ?> <?php endwhile; else: ?> <p><?php _e('לא מצאתי את מה שחיפשת.'); ?></p> <?php endif; ?> <?php posts_nav_link(' — ', __('« בחזרה'), __('להמשך חיפוש »')); ?> |
שימו לב שהוספתי סוגריים מסולסלים סביב כל הביטוי של ה else בו הוספנו את הקוד החדש, ללא סוגריים אלו הקוד יהיה שגוי.
נהניתם ? הרשמו לעדכוני RSS !
זה אחד הדברים שאני הכי אוהב ומעריך ב-WP.
המודולאריות הרבה של המערכת.
היכולת ליישם כל כך הרבה ואריאציות על המערכת הזאת.
אגב, הסבר מצוין כרגיל
תודה. זה גם אחד הדברים שאני הכי אוהבת במערכת.
המודולגיות באה לידי ביטוי החל ביכולות המרובות בעיצוב התבניות וכלה ביכלות כתיבת\הוספת תוספים למערכת.
כיף גדול.
אני מקבל את השגיאה הבאה בהרצת הקוד:
ושורה 16 זאת השורה שכוללת את ה-if ($i
שים לב שתוסף הקוד שלי (שהוא בעייתי משהו) מוסיף רווחים בין התו > ל-? בכל פתיחת קוד PHP.
האם תיקנת זאת ?
כן, כמובן, Screem מדגיש טאגים וזה היה מאוד בולט לעין ברגע שהעתקתי את הקוד. ניסיתי גם לשים סוגריים מסולסלים לתנאי, אבל נראה שאין לזה חשיבות.
טוב, הצלחתי לגרום לזה לעבוד, בעזרת התוסף the_excerpt_Reloaded. הנה איך שעשיתי את זה (רק הקוד הרלוונטי):
אומנם נשארו כמה שאריות מאיך שזה עבד לפני שקראתי את הפוסט שלך, אבל השארתי אותם רק לצורך בטחון (אפשר למעשה לבטל את מרבית הפרמטרים של התוסף).
ועוד שאלה שנולדה עכשיו, האם אני יכול להוסיף איזשהו תנאי שהסקריפט ירוץ רק בעמוד הראשון ולא בכל שאר העמודים של הבלוג? כרגע הוא מציג לי את הפוסט הראשון בכל עמוד באורכו המלא ואת 120 התווים הראשונים של שאר ה-4 פוסטים שיש לי בעמוד.
המממ הוא לא מציג את כל הקוד… אני מנסה שוב:
לא, אותה הבעיה שוב.
הקוד כפי שנכתב כאן נבדק ועובד
אתה מוזמן לשלוח לי מייל עם הקובץ ששינית כך שאוכל לבדוק אותו
אגב מקריאה מהירה על התוסף שציינת – אני לא רואה סיבה משמעותית להשתמש בו.
אין לי ספק בכך

ונראה לי שאני צריך ללמוד לעשות קופי-פייסט… מחקתי לגמרי, העתקתי ל-gedid, תיקנתי את הרווחים, העתקתי ל-screem, וידאתי שהכל תקין מבחינת ה-PHP, שמרתי והעליתי לשרת, ופתאום הכל עובד
אני לא ממש יודע במה הייתה הבעיה, אני רק זוכר שהיא התחילה בכך ששיניתי את כמות הפוסטים שהחל ממנה יוצגו רק תקצירים (במקום 3 רשמתי 0).
שוב פעם תודה רבה לך על המדריך והעזרה!
בכיף גדול, כנראה ברחו לך כמה תווים בדרך.
שמחה שהכל עובד כעת.
Hm, I am ok with this however not 100 % sure, thus i'm gonna research a touch more.
Hm, I'm just happy with this but still not fully certain, thus i'm going to research a tad bit more.
I'm aware about this already, nevertheless there are a few useful bits which finished the image to me, thank you so much!