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

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

לקחתי את התוסף 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 !

תוסף העלאת קבצים DivShare

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

נכון להיום אני משלמת כ-3.5$ לחודש על האחסון שלי, והתחלתי כבר לבדוק אפשרויות אחרות. המוטיבים החשובים ביותר מבחינתי הם אלו שקשורים לגירסאות של PHPת MySQL וכן למגבלות על מספר דומיינים גישת shell וכו'
אני רוצה יותר שליטה על הכל, מאידך אני ממש לא בטוחה שאני באמת רוצה לשלם את ה-10$ לחודש עבור Dreamhost, אבל על כל זאת בפוסט אחר.

בינתיים החלטתי לנקוט בצעד נוסף של אחסון תמונות שלא אצלי על השרת, לכך יש שני יתרונות:

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

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

מסך העלאת הקבצים הרגיל של וורדפרס:
מסך העלאת הקבצים הרגיל של וורדפרס
מוחלף במסף ההעלאה של DivShare:
מסך ההעלאה של DivShare
ולבעלי החשבון (ניתן להרשם חינם) במסך ניהול הקבצים האישי:
מסך ניהול הקבצים האישי
ניתן גם להעלות מספר קבצים במקביל:
מספר קבצים במקביל

התוסף נוח לשימוש ומאד אינטואיטיבי.
לאחר העלאת הקובץ ניתן להשתמש בכפתור ה-More Options ולקבל את הקוד לשתילה בבלוג:
הקוד לשתילה בבלוג

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

025 תוסף העלאת קבצים DivShare נהניתם ? הרשמו לעדכוני RSS !

עדכון תוסף הצגת התראות

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

  • הפעלה\השהייה של התוסף
  • בחירה האם להגביל בזמנים או לא
  • תרגום לעברית – סוף סוף

שימו לב שהפעלת התוסף השתנתה. פרטים בפוסט המקורי.

מקווה שתהנו.

025 עדכון תוסף הצגת התראות נהניתם ? הרשמו לעדכוני RSS !