http://www.dakars.info

אני פנויה לעבודות פרילנס עד להודעה חדשה.

מה אני יודעת לעשות ? כל דבר שקשור לוורדפרס כל עוד אינו מצריך יכולות עיצוב.
דוגמאות ניתן לראות בתיק העבודות שלי או ברחבי הבלוג עצמו.
ניתן ליצור איתי קשר במיייל: webmaster@dakars.info

הצגת פוסטים קשורים כתמונות

9

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

לקחתי את התוסף 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="&quot;.get_permalink().&quot;">";<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="&quot;.get_permalink().&quot;">";
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;
זה הכל.

025 הצגת פוסטים קשורים כתמונות נהניתם ? הרשמו לעדכוני RSS !

תגובות (9)

אני ממש מודה לך על ההסברים!!
זה ממש שווה

בהזדמנות אנסה את התוסף. בטח זה לא יהיה קל.. :roll:

אני שמחה לשמע שזה היה ברור ועזר איכשהו.

אין אין, את פשוט תותחית!

ניסיתי לעשות זאת על גרסה 2.2 והחלפתי את ה-wp23_get_related_posts בפונקציה אחרת של Simple tag אך זה לא עובד
הכנסתי את זה לעמוד single.php אך הוא מראה לי את הקוד ולא תמונות.
פספתי משהו?

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

[...] הדרך השניה לבצע את המשימה מצאתי בפוסט של אח”י דקר כחלק מהשלב של ייצוג פוסטים קשורים כתמונות. [...]

[...] הדרך השניה לבצע את המשימה מצאתי בפוסט של אח”י דקר כחלק מהשלב של ייצוג פוסטים קשורים כתמונות. [...]

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

[...] הדרך השניה לבצע את המשימה מצאתי בפוסט של אח”י דקר כחלק מהשלב של ייצוג פוסטים קשורים כתמונות. [...]

ניתן להגיב


:mrgreen::|:twisted::arrow:8O:):?8):evil::D:idea::oops::P:roll:;):cry::o:lol::x:(:!::?: