22
במרץ
2010

טיפ וורדפרס: עיצוב שונה לפוסטים יחידים לפי קטגוריה

מאת: מאור ברזני | תגובות: 2 | נושאים: וורדפרס
תגיות: , , , |

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

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

בעזרת התוספת הצפויה להיררכית קבצי התבנית של וורדפרס 3.0, ניתן יהיה לייצר קובץ תבנית עם השם single-{post_type}.php והוא יהיה אחראי על תצוגה של פוסט יחיד מסוג התוכן הנ"ל.

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

הוספת קבצי תבנית מותאמים אישית לפוסטים בודדים

בעזרת התנייה פשוטה על הפונקציה in_category() אפשר לבדוק האם פוסט נמצא בקטגוריה מסוימת. הקוד הבא מתאר למשל תוספת שנוסיף לקובץ single.php, הקובץ שאחרי לתצוגת פוסט יחיד, מיד לפני הלופ.

הלופ בד"כ היא השורה שמתחילה במה שמופיע פה בקוד בשורה מספר 13. נקיף את הלופ בקוד הזה, ואז עבור פוסט יחיד בקטגוריה בשם news, ייטען הקובץ single-news.php. כך אותו הדבר לגבי פוסטים בודדים בקטגוריות בשם videos ו -articles

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 <?php
         if ( in_category('news') ) {
             include 'single-news.php';

         } elseif ( in_category('videos') ) {
             include 'single-videos.php';
             
         } elseif ( in_category('articles') ) {
             include 'single- articles.php';
             
         } else {
             // Continue with normal Loop
             if ( have_posts() ) : while ( have_posts() ) : the_post();
             // ...
         }
 ?>

מסתבכים? אפשר בדרך נוספת, פשוטה עוד יותר

במידה שמסתבכים עם איפה להוסיף את הקוד, ומה להוסיף בכל אחד מהקבצים השונים, אפשר לפעול גם מעט שונה: משכפלים את הקובץ single.php למספר קבצים שאנחנו צריכים + קובץ נוסף שנקרא לו single-default.php. כעת, בכל אחד מהקבצים נערוך את כל השינויים שאנחנו רוצים לתצוגה של פוסט יחיד מאותה קטגוריה. את הקובץ single.default.php נשאיר כמו המקור.

כעת, נמחק את כל התוכן מהקובץ single.php עצמו ונכתוב בו רק את ההכללות של הקבצים השונים שהכנו:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 <?php
         if ( in_category('news') ) {
             include 'single-news.php';
             
         } elseif ( in_category('videos') ) {
             include 'single-videos.php';
             
         } elseif ( in_category('articles') ) {
             include 'single- articles.php';
             
         } else {
             // for all other single posts in other categories
             include 'single-default.php';
         }
    ?>

במידה שמעוניינים לעשות שינויים מינוריים בלבד, כמו רק להסיר מקטע שלם עבור פוסטים השייכים לקטגוריה מסויימת וכדו', אפשר להסתפק בשימוש בהתנייה על הפונקציה in_category() בתוך הקובץ single.php הרגיל, גם מבלי ליצור קבצי עיצוב שונים.

שתפו גם אחרים:
  • email
  • Print
  • RSS
  • Facebook
  • Twitter
  • LinkedIn
  • Google Bookmarks
  • Live
  • PDF
  • MySpace
  • del.icio.us
  • Digg
  • Technorati
  • Yahoo! Bookmarks
  • Yahoo! Buzz
  • Add to favorites

2 תגובות »

  • מאת ariel:

    תודה רבה על הפוסט
    בקוד שמים את ה SLUG או את ה ID של הקטגוריה?

  • בפונקציה in_cateory אפשר לשים או SLUG או ID או שם הקטגוריה.
    בשם הקובץ עצמו שמצרפים – single-something , אפשר לתת איזה שם שרוצים כל עוד שם הקובץ זהה לשם שאליו קוראים. הכי נוח זה לתת שם גם את הסלאג או שם הקטגוריה, כך זה ברור מיד למי זה שייך.

פיד RSS לתגובות בפוסט | טראקבק


הוסף תגובה

You can add images to your comment by clicking here.

TechnoCraft - פתרונות אינטרנט


אֶקְסְפֶּרִימֶנְט דוֹט אֶפֶס - וורדפרס, תוכן, טכנולוגיה ועוד כמה דברים - מופעל באמצעות WordPress | פתרונות אינטרנט