היררכיית הקבצים בתבנית וורדפרס
(עדכון אחרון: 25.2.11, מעודכן לפי ההיררכייה של וורדפרס 3.1)
וורדפרס היא מערכת ניהול תוכן שמאפשרת לכם גמישות רבה בתחומים רבים. חלק מהגמישות שלה קשור באופן בו היא מטפלת באזורים השונים של האתר שלכם.
כשאתם מורידים ערכות עיצוב לוורדרפס, מה שנקרא תבניות וורדפרס, אתם מורידים למעשה סט של קבצים, שמדברים אחד עם השני (מלבד הדיבור שיש להם עם השרת ובסיס הנתונים). סט הקבצים הזה מכיל מספר קבצי PHP (כבר נדבר עליהם), קובץ עיצוב CSS (או מספר קבצים כאלה), ייתכן שגם מספר קבצי JS עם סקריפטים בג'אווהסקריפט וכמובן גם תיקיית images, שתכיל בתוכה את האימאג'ים השונים שהתבנית משתמשת בהם.
מאחר שנתקלתי בזמן האחרון בשאלות רבות בסגנון "האם אפשר להציג קטגוריה בוורדפרס באופן שונה מקטגוריות אחרות?", או "איך יוצרים תבנית אחת עבור עמוד הבית ותבנית אחרת לקטגוריות" וכדו', החלטתי לכתוב את הפוסט הזה שישמש את מי שצריך.
זה יהיה פוסט יחסית למתחילים בוורדפרס, שעדיין לא מכירים איך בנויה תבנית וורדפרס מבחינת ההיררכיה שלה. אני אתמקד כרגע בעיקר ביחסים השונים בין קבצי ה-PHP השונים של התבנית, ולא ברמת הפונקציות השונות שאפשר וניתן לשתול ולשנות בכל עמוד ועמוד.
מבנה כללי של עמוד באתר –
header.php
index.php (if others does not exist, by hierarchy.)
footer.php
header.php
קובץ ה-header.php מחזיק בד"כ את כל האלמנטים ששיכיים לאלמנט ה- head של html, כמו למשל הפניות לקבצי css ו-js חיצוניים, התניות דפדפנים, קודי מטה, קודי אימות, כותרת דינמית לעמוד, תצורת לינקים קנונים וכדו', כמו גם את כל גם לרוב את כל מה שאמור להופיע בחלק העליון של האתר, שאמור לחזור בכל עמוד באתר – כמו בד"כ למשל הלוגו, תפריטי ניווט הרשמת משתמש או כל אלמנט אחר שהוא.
קובץ ה-header.php ייטען אל העמודים השונים של האתר באמצעות הפונקציה של וורדפרס שתיכתב בראש כל עמוד מעמודי ה"אינדקס" השונים.
[ccwn_php]
[/ccwn_php]
footer.php
בדומה לקובץ header.php, הקובץ footer.php אחראי על מה שיימצא באופן קבוע בתחתית דף האתר (כמו למשל בר ניווט תחתון, לינקים שונים, או כל איזור אחר שהוא. בנוסף הוא ישמש גם להטמעת סקריפטים שונים של סטטיסטיקות, או כל דבר אחר שהוא שנרצה שירוץ בתחתית העמוד, וכן סגירת כל האלמנטים של עמוד ה-html.
ליבת האתר – index.php וכל השאר
למעשה, בניגוד למה שחושבים, שזהו הקובץ הראשון שנטען בתבנית כשעולה עמוד הבית, זהו למעשה הקובץ האחרון שעולה. לוורדפרס יש היררכיית עמודים בתבנית, והמערכת תחפש כל אחד מהם בהתאם למיקום של הגולש באתר. המערכת תחפש את הקובץ המתאים בהתאם לסדר קבוע ומוגדר מראש, כאשר הקובץ index.php הוא זה שיוצג רק אם לא קיים במקומו קובץ שמקומו גבוה יותר בהיררכיה. למעשה, הקובץ index.php הוא הכי מוכר דווקא בגלל ההיררכיה הנמוכה שלו.
מה זה אומר היררכיה נמוכה? זה אומר, למשל, שאם אין קובץ תבנית ספציפי המיועד לעמוד הבית, אז דף הבית יוצג בעזרת index.php. זה אומר, למשל, שאם לא קיים קובץ תבנית ייחודי עבור מבנה של קטגוריה, הקובץ index.php יציג גם את הקטגוריות על אותה התבנית. כך גם לכל אזור באתר ולכן דרך תצוגת תוכן.
למעשה, בכל התבניות שתשתמשו בהן, יהיה קיים קובץ index.php מאחר שישנם אזורים שונים שאין צורך לייצר עבורם תצורות נפרדות, ושימוש בקובץ זה יהיה מספק. סוגי התכנים האפשריים – עמודי קטגוריות באופן כללי, עמוד קטגוריה מסויימת, דפים סטטיים, תבנית קבוצת דפים סטטיים, דף בודד, תבנית של פוסט, תבנית לתוצאות חיפוש, תבנית תצוגה התוכן לפי ארכיון/לפי שנים /לפי חודשים, תצוגת התוכן לפי תגיות וכדו'. כל סוגי העמודים הללו יכולים לכלול קבצים ספציפיים משל עצמם, ואם זה לא קיים הם ייטענו בעזרת הקובץ index.php.
היררכית קבצי תבנית וורדפרס
להלן רשימה המסבירה על מה אחראי כל קובץ בתבנית וורדפרס, עבור כל סוג של תוכן ולפי היררכיה. הנתונים לפי הקודקס של וורדפרס:
תצוגת עמוד הבית
- home.php – אם קיים קובץ זה, הוא יהיה אחראי על עמוד הבית.
- index.php
תצוגת פוסט יחיד
- single.php
- index.php
תצוגת עמודים
- תבנית העמוד – בתור אפשרות ראשונה, המערכת תחפש את הקובץ של האחראי לתבנית העמוד המשויך לעמוד במערכת הניהול. כדי לייצר תבנית עמוד סטטי, לרוב נשכפל את הקובץ page.php וניתן לו שם כלשהו. נבצע את השינויים הדרושים וכן נוסיף בראש הקובץ את ההערה הבאה –
[ccwn_php]
/*
Template Name: some name
*/ ?>
[/ccwn_php] - page-slug.php – זהו הקובץ השני בהיררכיית הדפים , אותו המערכת תחפש בבואה לטעון את העמוד. אם הסלאג של העמוד הוא למשל – about, המערכת תחפש את העמוד – page-about.php ותציג אותו עבור העמוד. (אופציה זו תהיה קיימת רק החל מגרסה 2.9)
- page-id.php – אם אין תבנית עמוד ואין slug, וורדפרס תחפש את העמוד לפי מספרו. למשל – page-6.php, עבור עמוד מס' 6 (אופציה זו תהיה קיימת גם היא רק מגרסה 2.9)
- page.php – עבור כל שאר העמודים
- index.php – אם לא קיים הקובץ page.php, עמוד סטטי ייטען גם הוא ע"י index.php.
תצוגת קטגוריות
- category-slug.php – אם הסלאג של הקטגוריה הוא articles, וורדפרס תחפש את הקובץ category-articles.php כאופציה ראשונה, כשהגולש ייגש לעמוד הקטגוריה (אופציה זו תתאפשר החל מוורדרפס 2.9)
- category-id.php – עפ"י מספר הקטגוריה, למשל – category-4.php.
- category.php – עבור שאר הקטגוריות.
- archive.php – אם לא יימצא בערכה הקובץ category.php.
- index.php
תצוגת תגיות
אפשר ליצור תבנית עמוד שונה לתצוגת התגיות באתר, ע"י שימוש בקבצים המתאימים לתגיות –
- tag-slug.php – למשל – tag-internet.php, אם הסלאג של התגית הוא internet
- tag-id.php – לפי מספר התגית
- tag.php
- archive.php
- index.php
תבנית עמודי תצוגת כותבים בבלוג
- author.php
- archive.php
- index.php
תבנית עמודי ארכיון לפי תאריך
- date.php
- archive.php
- index.php
תבנית של עמודי תוצאות חיפוש
- search.php
- index.php
עמודי 404 (עמודי "לא נמצא")
- 404.php
- index.php
תבנית תצוגת קבצים מצורפים
- MIME_type.php – (image.php, video.php, audio.php, application.php)
- attachment.php
- single.php
- index.php
18.9.10, 21.3.10 – עדכונים עבור וורדפרס 3.0
היררכיית קבצי תבנית וורדפרס ממשיכה להתפתח וכעת נוספו גם האפשרויות לתבנית עמוד מחבר ולטקסונומית (מיונים) מותאמות אישית.
להלן קובץ גרפי נוסף שיקל עליכם להתמצא בהיררכיית תבנית של וורדפרס:
ניתן גם לצפות בקובץ זה בגודל מלא ברזולוציית דפוס – > היררכיית תבנית וורדפרס
> הקובץ נלקח מתוך הספר Digging Into WordPress
תבנית סוגי תוכן מותאמים אישית
גם סוגי תוכן מותאמים (Custom Post Types) אישית זוכים לתבניות משלהם. פוסט יחיד ששייך לסוג תוכן מסוים מותאם אישית יקבל את ההיררכיה הבאה –
- single-{post_type}.php – אם למשל הפוסט הוא מסוג products, אז הקובץ שייטען (אם הוא קיים) יהיה – single-products.php
- single.php
- index.php
עבור תבנית לעמוד ארכיון של סוג תוכן מותאם אישית ניתן להשתמש בתוספים או בכתיבת קוד שיבצע הפנייה כזו. כפי הנראה יש תוכניות להוסיף תמיכה מובנית לזה בוורדפרס 3.1
תבנית עבור סוגי מיונים (taxonomies) מותאמים אישית, ומונחים המשוייכים לטקסונומיה
- taxonomy-{taxonomy}-{term}.php – אם הטקסונומיה היא בשם bands והסלאג של המונח הוא למשל queen, אז וורדפרס תחפש את הקובץ taxonomy-bands-queen.php
- taxonomy-{taxonomy}.php – אם הטקסונומיה היא בשם bands, וורדפרס תחפש את הקובץ taxonomy-bands.php.
- taxonomy.php
- archive.php
- index.php
תבנית עמוד עבור עמודי כותב
- author-{nicename}.php – אם למשל שם התצוגה של המשתמש הוא yuki, אז התבנית שתיטען (במידה שקיימת) תהיה – author-yuki.php
- author-{id}.php – אותו הדבר, רק הפעם זה לפי מספר מזהה של הכותב.
אם קבצים אלה לא קיימים, ייטענו הקבצים הבאים לפי ההיררכייה הקיימת –
author.php ולאחרי כן archive.php ו-index.php
> מה עוד חדש בוורדפרס 3.0? חידושים וורדפרס 3.0
> עוד על היררכיית קבצי התבנית אפשר לקרוא בעמוד בקודקס של וורדפרס
25.2.11 – עדכונים עבור וורדפרס 3.1
תבנית עמוד עבור ארכיוני פוסטים מותאמים אישית (Custm Post Types)
החל מגרסה וורדפרס 3.1, גם ארכיונים של סוגי תוכן מותאמים (Custom Post Types) מקבלים תבניות משלהם, לאחר שעד כה היה צורך להשתמש בתוספים משלימים לצורך זה. עמוד ארכיון של סוג תוכן מותאם מסוים יקבל את ההיררכיה הבאה –
- archive-{post_type}.php – אם למשל מדובר בארכיון של פוסטים מסוג products, אז הקובץ שייטען (אם הוא קיים) עבור ארכיון הסוג יהיה – archive-products.php
- archive.php
- index.php
בעזרת פילטרים, ניתן גם לבצע מניפולציות ושינויים בהיררכיה או להוסיף גם תבניות נוספות בתוך ההיררכיה. הסבר על כך אפשר למצוא בקודקס.
> מה עוד חדש בוורדפרס 3.1? פיצ'רים של וורדפרס 3.1
17 תגובות »
פיד RSS לתגובות בפוסט | טראקבק
המון תודה ! אחלה מדריך.
עזר לי מאוד.
תודה. ברור ונהיר. עזר לי להבין את המבנה ויהיה נוח להשתמש בגרף בפעם הבאה שאצטרך לעשות שינויים קטנים בתבנית, ולהבין את ההשלכה שלהם.
תודה לכם על הפידבקים :-), שמח שזה מסייע לכם..
כל הכבוד גבר
[…] זיהוי הקטגוריה בתבנית לא רק לפי מספר (category-id.php) אלא גם לפי הסלאג שלה (category-slug.php), מה שיקל על פיתוח וקסטומיזציה של תבניות. […]
[…] במקרה של ארכיון קטגוריות הפוסטים, תוסיפו את השורה הזאת בקובץ category.php, או אם אינו קיים אז לקובץ archive.php או index.php, אבל אז הוא כמובן ישפיע לכם גם על איזורים שונים באתר, הכל כמובן לפי הירככיית קבצי תבניות וורדרפס. […]
אכן פוסט מצויין שתכננתי גם לכתוב אותו…
.-= פורסם לאחרונה אצל מתי.. If you register your site for free at =-.
עודכנו בסוף הפוסט מספר תוספות הצפויות בהיררכיית הקבצים בוורדרפס 3.0
[…] יש לכם קבצי תבנית נוספים של עמודים, לפי היררכיית קבצי התבנית בוורדפרס, אז כמובן שניתן לשתול את הקוד הזה גם שם. חשוב להוסיף, […]
תודה, בדיוק מה שהייתי צריך כדי לעשות קצת סדר.
תודה רבה! באמת שהחומר הזה הועיל.
תודה תודה תודה! מפת התמצאות הכרחית.ים של אפשרויות נפתח!
[…] את עיצוב הפוסט. עם זאת, אין מדובר כאן בתוספת ממשית להיררכיית קבצי תבנית וורדפרס והוספת אפשרות לקבוע סוג תבניות משתנים. במקום זאת קיימת […]
איזה יופי!!! תודה רבה רבה!!!
אני רק מסתבך להבין איך מגדירים תוכן כCustom Post Types…
תודה רבה רבה לך!!!
מאור שלום,
המאמר מצויין, כיצד ניתן לפנות לדוגמא לדף רכישה מעוצב אישית (אין לי בעיה בקוד אלא בהיררכיה) מתוך דף מוצר בקטגוריה (כלומר 3 רמות בניווט) ?
תודה רבה!
אתה יודע אולי איפה אפשר לקחת קורס בנושא הזה?
אני לא יודע, אבל אמרו כמה אנשים אמרו לי שהאקר יו פחות מומלצים