ויזואליזציה של היררכיית תבניות עמוד בוורדפרס

הויזואליזציה הנפלאה הזו היא תודות ל wp.hierarchy.com
Archive Page Singular Page Site Front Page Blog Posts Index page Error 404 Page Search Result Page archive.php index.php Author Archive author-$nicename.php $mimetype- $subtype.php author-$id.php author.php tag.php $subtype.php $mimetype.php attachment.php single-$posttype.php single-post.php category-$slug.php $category-$id.php taxonomy- $taxonomy-$term.php taxonomy- $taxonomy.php category.php archive-$posttype.php tag-$slug.php tag-$id.php taxonomy.php date.php Category Archive Custom Post Type Archive Custom Taxonomy Archive Year Archive Month Archive Page Shown On Front Posts Shown On Front Day Archive Date Archive Tag Archive Attachment Post Custom Post Single Post Page front-page.php Custom Template Default Template If selected: $custom.php If selected: $custom.php $custom.php page-$slug.php page-$id.php Static Page Blog Post Page Template single.php page.php home.php 404.php search.php single- $posttype-$slug.php singular.php
קוראים ממכשיר סלולרי? תענוג! אך אתם מפסידים SVG מדליק שמציג את הויזואליזציה בצורה מגניבה...
תבנית ראשית
תבנית משנית
תבנית משתנה
סוג עמוד

היררכיה של תבניות עמוד (Page Templates) בוורדפרס

מדריך להיררכיה של תבניות עמוד באתרי וורדפרס

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

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

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

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

לצורך הבהרה – ההתייחסות למילה תבנית בפוסט זה הינה לתבנית עמוד (page template) ולא לערכת הנושא (theme) בה אתם משתמשים.

היררכיה של תבניות עמוד – סוגי תבניות

בוורדפרס, עמודים מורכבים מקבצי תבנית שונים על ידי שימוש בפונקציה get_template_part(). כל קובץ מייצג חלק אחר בעמוד, וביחד מרכיבים את כל התוכן עבור עמוד מסויים כאשר תוכן זה נמשך מממשק הניהול של וורדפרס (אם נפשט את העניין). אך הבחירה איזו תבנית תהיה בשימוש מבוססת על אותה היררכיה רובסטית שהזכרנו קודם לכן. בהיררכיה זו, תבנית ברירת המחדל מוחלפת בתבנית ספציפית יותר. אני מניח שדוגמה תסביר זאת טוב יותר…

נאמר ומשתמש כלשהו מבקר בעמוד “http://yoursite.co.il/author/roee”. דבר ראשון, וורדפרס תחפש תבנית בשם author-roee.php. אם תבנית עמוד זו אינה קיימת וורדפרס תחפש תבנית בשם author.php. אם זה לא קיים ונמשיך לעלות בהיררכיה, וורדפרס תחפש את archive.php ואחריו את index.php בכדי לרנדר ולהציג את העמוד.

בכל פעם שמשתמש מבקר בעמוד מסויים, וורדפרס נעה במעלה ההיררכיה עד שתמצא את הקובץ שמתאים  ויש קשר ישיר לשמות הקבצים בערכת הנושא שלכם.

קבצי תבנית הכרחיים

עניין שחשוב לדעת לגבי ערכות נושא בוורדפרס, הוא שישנם קבצים שחייבים להיות קיימים על מנת שערכת נושא תוכל לעבוד. לא כולם הם תבניות עמוד אך כולם חייבים להיות קיימים על מנת שערכת הנושא (theme) תעבוד.

לדוגמה, הקבצים index.php ו style.css הם הכרחיים. הראשון הוא תבנית העמוד הגבוהה ביותר בהיררכיית תבניות העמוד וזו יהיה בשימוש כאשר וורדפרס לא תמצא תבנית עמוד ספציפית יותר (עוד על כך בהמשך). השני הוא קובץ העיצוב שכמינימום נדרש להכיל מידע בסיסי על ערכת הנושא בה אתם משתמשים כגון: שם ערכת הנושא, תיאור, ומחבר ערכת הנושא. מכיוון ושני קבצים אלו אינם תבניות עמוד לא נחפור בהם יותר מדי אך חשוב לדעת כי הם קיימים.

אם נוציא נכסים למינהם מהמשוואה (קבצי Javascript וקבצי CSS), ניתן לומר שכל הקבצים הקיימים בתיקייה של ערכת הנושא הם קבצי תבנית כאלו או אחרים ואלו מתחלקים לשתי קבוצות: אלו שמחוץ ללולאה של וורדפרס ואלו שמכילים את הלולאה של וורדפרס.

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

ניגע בקבצים שמכילים את הלולאה בהרחבה אך חשוב לציין גם את אותם קבצים שמחוץ ללולאה של וורדפרס. בהסבר על אותם קבצים, שימו לב במיוחד לשמות הקבצים (naming convention) – לפי שמות הקבצים וורדפרס יודעת באיזו תבנית עמוד להשתמש ומתי.

קבצי תבנית שמחוץ ללולאה

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

קובץ ההאדר נקרא header.php וקובץ הפוטר נקרא footer.php. שני קבצים אלו הם קבצים הכרחיים לערכת הנושא אך קיימים מחוץ ללולאה של וורדפרס.

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

בנוסף, קיים הקובץ comments.php כאשר קובץ זה אחראי לאותן תגובות שאתם מוצאים בסוף מרבית הפוסטים שאתם קוראים. קובץ זה יכול להיות מעט מורכב, אך בבסיסו – הוא פשוט מכיל קוד HTML ו PHP שמתאר כיצד התגובות ייראו באתר וורדפרס שלכם.

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

הצטרפו לרשימת התפוצה!

עמוד דף הבית (Front Page)

סביר להניח כי עמוד הבית הוא אחד העמודים החשובים בבערכת הנושא שלכם. כאשר משתמש מבקר בעמוד הבית שלכם, וורדפרס תחפש את הקובץ index.php על מנת לרנדר את העמוד. אך לקובץ משמעות חזקה יותר מאשר לרנדר את עמוד הבית. קובץ זה יהיה בשימוש בכל סיטואציה בה וורדפרס אינה מוצאת קובץ ספציפי לתבנית מסויימת.

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

אז בכל אופן, ישנם שני קבצים להם השפעה על עמוד הבית והם home.php ו front-page.php כאשר לשני שציינו מבינהם עדיפות על הראשון.  אם הקובץ front-page.php אינו קיים וורדפרס תשתמש ב home.php או ב page.php וזאת בהתאם למה שקבעתם בהגדרות > קריאה בממשק הניהול (פוסטים אחרונים או עמוד סטטי).

אם אחד מקבצים אלו נמצאים בערכת הנושא שלכם, הם ידרסו את הקובץ index.php ויקבלו עדיפות כאשר התוכן מרונדר בעמוד הבית. אך זכרו, כי index.php ו front-page.php יכולים להכיל את אותו קוד וירנדרו את עמוד הבית בדיוק אותו דבר.

עם זאת, front-page.php יהיה בשימוש אך ורק עבור עמוד הבית כאשר index.php יהיה בשימוש כברירת המחדל לשאר העמודים. אז ההיררכיה של עמוד הבית לאתר שלכם תראה בצורה הבאה, כאשר קובץ העליון ברשימה ספציפי יותר ועדיף על אלו שמתחתיו:

/*** Homepage Hierarchy ***/
front-page.php
home.php
page.php
index.php

עמודי ארכיון (Archive Pages)

עמודי ארכיון אלו עמודים שמציגים רשימה של פוסטים הנמשכים מ״קבוצה״ מסויימת. עמודים אלו כוללים בתוכם את עמודי המחבר (author pages), עמודי קטגוריה, עמודי תאריך (date pages) וכל רשימה אחרת של פוסטים שישנו הגיון בליצור מהם קבוצה.

תבנית ברירת המחדל עבור עמודי ארכיון הינו הקובץ archive.php. אם אין תבנית ספציפית יותר עבור עבור עמודים אלו, הקובץ archive.php יהיה בשימוש. קובץ זה אינו באמת הכרחי ואם אינו נמצא בערכת הנושא שלכם – וורדפרס תשתמש בקובץ index.php על מנת לרנדר את עמודי הארכיון.

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

ההיררכיה של עמודי ארכיון היא די פשוטה:

/*** Archive Hierarchy ***/
archive.php
index.php

עמוד מחבר (Author Page)

עמודי מחבר (Author Pages) הם ״תבניות משנה״ לתבנית הארכיון ואלו מראים אך ורק את רשימת הפוסטים של מחבר מסויים. לדוגמה, משתמש יכול לגשת לכתובת “http://yoursite.co.il/author/roee” ובכך לראות את כל הפוסטים שנכתבו על ידי המחבר roee.

כברירת מחדל, וורדפרס תשתמש בקובץ archive.php עבור עמודים אלו, אך אם אתם מעונייים להיות יותר ספציפיים, תוכלו ליצור קובץ בשם author.php. אם תעשו זאת עמודי המחבר ישתמשו בקובץ author.php על מנת לרנדר את העמוד וידרסו את הקובץ archive.php.

אך במקרה זה אתם יכולים להיות אף יותר ספציפיים ולהוסיף קובץ שירנדר את התוכן בצורה שונה עבור מחבר מסויים. זאת ניתן לעשות על ידי יצירת קובץ בשם author-[id].php או author-[nicename].php. בדוגמה שהצגנו מעלה, יכולנו ליצור קובץ בשם author-roee.php בכדי לדרוס גם את archive.php וגם את author.php ולהציג את התוכן.

הדוגמה של עמודי מחבר היא דוגמה מצויינת בכדי להבין כיצד עובדת ההיררכיה של בוורדפרס:

/*** Author Hierarchy ***/
author-[nicename].php
author-[id].php
author.php
archive.php
index.php

עמוד קטגוריה (Category Page)

עמודי הקטגוריה עובדים באותה צורה כמו עמודי המחבר. לדוגמה, אם אתם מבקרים בכתובת “http://yoursite.com/category/my-category” – אז כברירת מחדל וורדפרס תשתמש ב archive.php. אך אם תצרו קובץ בשם category.php הוא ידרוס את ברירת המחדל ווורדפרס תשתמש בקובץ זה על מנת לרנדר את העמוד.

בדומה לעמודי המחבר, יש באפשרותכם לציין את הקטגוריה באמצעות category-[slug].php או category-[id].php. בשני המקרים, אלו יקבלו עדיפות על פני הקובץ category.php.

ההיררכיה של עמודי קטגוריה הינה זהה לעמודי המחבר:

/*** Category Hierarchy ***/
category-[slug].php
category-[id].php
category.php
archive.php
index.php

עמודי ארכיון נוספים

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

לדוגמה, אם אתם רוצים ליצור תבנית שמיושמת רק עבור עמודי התגיות (tags), תוכלו ליצור קובץ בשם tag.php או אף tag-[id].php אם אתם רוצים לרדת לעלות בהיררכיה. כנ״ל לגבי עמודי תאריך, באפשרותכם ליצור קובץ בשם date.php.

ישנה חריגה אחת מן הכלל וזאת כאשר מתייחסים לעמודי ארכיון של סוגי תוכן מותאמים (Custom Post types). כשאר המצבים, archive.php יהיה קובץ ברירת המחדל, אך אם אתם מעוניינים ליצור תבנית ספציפית עבור עמוד הארכיון של סוג תוכן מותאם מסויים, יש ליצור קובץ בצורה הבאה archive-[post_type_name].php.

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

עמודים יחידים (Single Pages)

כעת, כשאנו מבינים כיצד עובדת ההיררכיה של עמודי ארכיון נמשיך לעמודים היחידים (Single Pages) באתר וורדפרס. אלו כוללים עמודים אינדיבידואלים כגון: עמודים סטטיים (Pages), עמודי פוסטים (Single Posts), עמודי קובץ (attachment) ופוסטים של סוגי תוכן מותאמים כאלו ואחרים.

עמודי פוסטים

בעמודי פוסטים הכוונה היא לכל עמוד אינדיבידואלי שנופל תחת סוג התוכן שנקרא Posts או תחת סוג תוכן מותאם שיצרתם. התבנית הכללית עבור עמודים אלו הינה הקובץ single.php. אם רק קובץ זה קיים בערכת הנושא שלכם, אז כל הפוסטים האינדיבידואלים כולל עמודי קובץ וסוגי תוכן מותאמים ישתמשו בקובץ זה. יש לציין כי קובץ זה אינו הכרחי – אם אינו קיים וורדפרס תשתמש בקובץ index.php בכדי לרנדר את התוכן.

אם אתם מעוניינים להגדיר תבנית עבור סוג תוכן מותאם ספציפי, אתם יכולים ליצור קובץ בשם single-[post_type_name].php. לדוגמה, אם לצורך העניין סוג התוכן נקרא "Portfolio" אז שם הקובץ צריך להיות single-portfolio.php.

ישנה גם האפשרות להיות יותר ספציפיים עם עמודי קובץ (attachments) על ידי שימוש בקובץ attachment.php. מבחינת עמודי קובץ ניתן אף לרדת עמוק יותר ולקבוע תבנית לפי סוג הקובץ המדובר (MIME Type), לדוגמה image.php או video.php. בסופו של דבר, ההיררכיה של עמודים נראית כך:

/*** Single Post Hierarchy ***/
image.php (or video.php, text.php, etc.)
attachment.php
single-attachment.php
single-[post_type_name].php
single.php
index.php

עמודים סטטיים

עמודים הם מקרה מעט שונה, וכשאני אומר עמודים אני מתכוון לכל התוכן היושב תחת סוג התוכן ״Pages״ בוורדפרס. כשאר סוגי התוכן, יש באפשרותכם האופציה לקבוע תבנית ברירת מחדל בשם page.php. גם במקרה זה קובץ זה אינו חובה ובמידה וחסר וורדפרס תשתמש בקובץ index.php.

שלא כעמודי פוסטים שהזכרנו קודם, בעמודים ישנה האפשרות ליצור תבנית ספציפית לעמוד מסויים על ידי page-[id].php או page-[slug].php. תבניות אלו יהיו בשימוש רק עבור אותו עמוד ספציפי שהגדרתם בשם הקובץ, בין אם לפי ID או לפי slug. כל שאר העמודים ישתמשו ב page.php.

אך במקרה של עמודים ישנה האופציה לבחור את תבנית העמוד דרך ממשק הניהול של וורדפרס. אני מדבר על מאפייני עמוד > תבנית עמוד כאשר אתם עורכים את העמוד בממשק הניהול. במקרה שבחרתם תבנית (Custom Template)  בחלק זה, היא תדרוס כל תבנית אחרת שקיימת עבור אותו עמוד ומכאן שהיא החזקה ביררכיה.

ההיררכיה של עמודים נראית כבדוגמה הבאה:

/*** Page Hierarchy ***/
custom template
page-[slug].php
page-[id].php
page.php
index.php

תבניות עמוד נוספות

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

התבנית השנייה שלפעמים תראו הינה search.php. תבנית זו אחראית להצגה של תוצאות החיפוש באתר הוורדפרס שלכם. זאת יכולה להיות מנוהלת גם על ידי הקובץ index.php בתבניות מסויימות.

לסיכום

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

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

רועי יוסף
רועי יוסף

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

{ 3 תגובות… הוסף אחת }
  • לאה 29 במרץ 2018, 23:16

    רועי, אז איזה אחלה פוסט! איך הסברת את ההיררכיה בצורה מקיפה ויסודית! מעניין, איך בכלל החלטת לכתוב פוסט על זה?

    ויש לי עוד שתי שאלות:

    1. מה זה home.php? מעניין אותי במיוחד להבין מה ההבדל בין זה ל- front-page.php.
    2. מה קורה כששם הקטגוריה הוא בעברית? אני מניחה שאז אי אפשר ליצור category-[slug].php.

    ורק לתרום איזה 2 סנטים: אם משתמשים בתבנית מורכבת שקשה לעקוב בה אחרי כל הקבצים, וגולשים בעמוד כלשהו ורוצים לדעת איזה קובץ מרנדר את העמוד הזה, אז יש לשאלה הזאת ב-WPSE כמה וכמה תשובות מעניינות.

    תודה על פוסט מצוין.

    • רועי יוסף 31 במרץ 2018, 15:44

      היי לאה 🙂

      הוספתי הסבר (שהיה חסר) לגבי home.php במדריך אך בכל אופן אנסה להסביר גם כאן:

      כאשר קיים, frontpage.php יהיה בשימוש בכל מקרה עבור עמוד הבית. אם וורדפרס לא מוצאת קובץ זה וורדפרס תשתמש או ב home.php או ב page.php בהתאם להגדרות הקריאה. home.php יהיה בשימוש בסיטואציה זו כאשר הגדרות התצוגה לעמוד הבית מכוונות לפוסטים האחרונים. בנוסף, home.php יהיה בשימוש כאשר ״עמוד הפוסטים״ כאשר דף בית סטטי מוגדר בהגדרות הקריאה.

      תודה אגב גם ל התיקון בהקשר של קבצי תבנית הכרחיים, אכן functions.php אינו הכרחי ו index.php כן הכרחי…

השאירו תגובה

פעימות
קישורי NoFollow
על קישורי NoFollow והערך שלהם באסטרטגיות קידום אתרים

קישורי NoFollow הם חלק חשוב מאסטרטגיית קידום ו SEO. המציאות היא כזו - קישורי NoFollow...