עלתה ברשימת הדיור של גוגל היום השאלה איך ליצור רשימת פוסטים קשורים המציגה תמונות ולא את שם הפוסט.
התגובה שנתתי היא שצריך לשלב בין תוסף תמונות בפוסט לתוסף פוסטים אחרונים כזה או אחר.
לקחתי את התוסף wp32_related_posts עליו כתבתי בפוסט תגיות בוורדפרס 2.3. חיטוט מהיר בקרביו הראה שהתוסף מכיל פונקציה בשם wp23_get_related_posts המחזירה מערך של הפוסטים הקשורים.
בנוסף השתמשתי בתוסף post_image המאפשר לשייך לכל פוסט תמונה שהיא התמונה הראשונה המופיעה בו, או תמונת ברירת מחדל.
למעשה מרגע זה כל השינוי הנדרש היה בתבנית שלי.
ההגיון הוא פשוט – אנחנו רוצים לעבור על רשימת הפוסטים הקשורים ולשייך לכל אחד מהם את הצלמית של התמונה הראשונה המופיעה בו או את תמונת ברירת המחדל (אם אין בפוסט תמונות).
התוצאה הרצויה נראית כך:

הקוד העושה זאת הוא:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $c_posts = $posts;<br /> $current = $post;<br /> $c_images = $post_image_attachments;<br /> $r_posts = wp23_get_related_posts();<br /> foreach ($r_posts as $post) {<br /> $posts = array($post);<br /> $post_image_attachments = "";<br /> echo "<a href="".get_permalink()."">";<br /> post_image('http://localhost/www/2.1/wp-content/uploads/rss.png', true);<br /> echo "</a><a>";<br /> }<br /> $post = $current;<br /> $posts = $c_posts;<br /> $post_image_attachments = $c_images;<br /> </a> |
עכשיו בואו נעבור עליו לאט לאט.
התוסף post_image מסתמך על קיומם של מספר משתנים הקשורים לפוסט הנוכחי (עבורו נרצה את התוסף בד"כ), כיוון שאנחנו קצת אונסים את הפעולה שלו נצטרך לאפס את הערכים של משתנים אלו לצרכינו.
המשתנים האמורים הם:
- $post – משתנה המכיל את הערכים של הפוסט הנוכחי, משתנה זה יאותחל בתוך הלולאה להיות כל הפעם הפוסט הקשור אליו אנחנו מתייחסים.
- $posts – משתנה המכיל את רשימת הפוסטים עבורם התוסף מופעל, כיוון שעבור כל רשימה כזו התוסף מייצר תמונה אחת נאתחל את המשתנה להיות רשימה בת איבר אחד – הפוסט עבורו אנחנו רוצים את התמונה.
- $post_image_attachments – רשימת התמונות המקושרות לפוסט, משתנה זה עובר שינוי בתוך התוסף, ועל כן נאתחל אותו לאחר כל שימוש בתוסף.
כשלב ראשון אני שומרת את הערכים הנוכחיים של המשתנים בהם אשתמש על מנת לאחזר אותם לאחר השימוש לערכים המקוריים שלהם.
1 2 3 | $c_posts = $posts;<br /> $current = $post;<br /> $c_images = $post_image_attachments; |
עכשיו אני מפעילה את הפונקציה wp32_get_related_posts על מנת לקבל את רשימת הפוסטים הקשורים עבורה נרצה את התמונות.
את התוצאה שמרתי במשתנה $r_posts.
1 | $r_posts = wp32_get_related_posts(); |
השלב הבא הוא לולאה שעוברת על כל הפוסטים ועבור כל אחד מהם שולפת את התמונה.
את הלולאה נבצע בעזרת foreach כאשר בכל מעבר נשים את ערך הפוסט החדש שקיבלנו בתוך המשתנה $post.
1 | foreach ($r_posts as $post) |
בתוך הלולאה נאתחל את המשתנים הגלובליים כך שיתאימו לפוסט הספציפי עבורו אנחנו רוצים לקבל את התמונה. כאמור – רשימת הפוסטים מאותחלת להיות מערך המכיל את הפוסט הקשור הרלוונטי לנו, ומשתנה התמונות הקשורות מאופס.
$posts = array($post); $post_image_attachments = "";[/cc] כל שנותר לנו הוא לקרוא לפונקציה המוצאת את הצלמית עבור פוסט. הערכים שהפונקציה מקבלת הם במקרה זה תמונת ברירת מחדל שתוצג אם בפוסט אין תמונות וכן הגדרה לייצר צלמית מכל תמונה. הכנסתי את התמונה אל תוך קישור כך שלחיצה אליה תוביל לפוסט האמור.עכשיו נסגור את הלולאה ונחסיר את המשתנים לערכיהם ההתחלתיים
1
2
3 echo "<a href="".get_permalink()."">";
post_image('http://localhost/www/2.1/wp-content/uploads/rss.png', true);
echo "</a><a>";</a>זה הכל.
1
2
3
4 }
$post = $current;
$posts = $c_posts;
$post_image_attachments = $c_images;
נהניתם ? הרשמו לעדכוני RSS !
אני ממש מודה לך על ההסברים!!
זה ממש שווה
בהזדמנות אנסה את התוסף. בטח זה לא יהיה קל..
אני שמחה לשמע שזה היה ברור ועזר איכשהו.
אין אין, את פשוט תותחית!
ניסיתי לעשות זאת על גרסה 2.2 והחלפתי את ה-wp23_get_related_posts בפונקציה אחרת של Simple tag אך זה לא עובד
הכנסתי את זה לעמוד single.php אך הוא מראה לי את הקוד ולא תמונות.
פספתי משהו?
איתי,
אני לא יודעת איך עובד התוסף Simple tag.
תבדוק מה מחזירה לך הפונקציה בה השתמשת.
אני מסתמכת פה על כך ש wp32_get_related_posts מחזירה לי רשימת פוסטים.
בכל מקרה אחר תצטרך לשלוף את מבנה הנתונים post בהתאם לתוצאות.
פינגבאק: The N.Z.B » תמונה לפוסט
פינגבאק: הבדיקות » Blog Archive » תמונה לפוסט
פינגבאק: צעצועים לדף הבית » ITbananas
פינגבאק: תמונה לפוסט | הבדיקות
I'm aware about this already, but nevertheless there have been some beneficial bits which completed the picture for me personally, thanks a lot!
I was aware about this already, but nonetheless there was clearly a few useful pieces which concluded the image for me, thank you so much!
That sounds good though i'm just still not too certain that I prefer it. At any rate will look even more into it and decide for myself!
We without doubt need to think more in that way and find out a few things i can do about that.