
תבנית בת (Child Theme) בוורדפרס היא תבנית קטנה שיורשת את כל העיצוב והפונקציונליות מתבנית אחרת — "תבנית האם" — ומכילה רק את השינויים שלכם. היתרון המרכזי: אפשר לעדכן את תבנית האם בלי לאבד את ההתאמות, כי הן לא נכתבו בתוך הקבצים שלה. תבנית בת מתאימה לשינויים קטנים עד בינוניים בתבנית קיימת; לשינויים גדולים, או לאתר שנבנה מאפס, היא כבר לא הכלי הנכון.
הבעיה שתבנית בת פותרת
נניח שהאתר בנוי על תבנית מסחרית, ושיניתם ישירות בקבצים שלה את הכותרת העליונה, הוספתם פונקציה ב-functions.php ותיקנתם כמה שורות CSS. בעדכון הבא של התבנית — וחלק מהעדכונים הם תיקוני אבטחה — כל הקבצים שלה יוחלפו, והשינויים שלכם ייעלמו. הברירה הופכת לבלתי אפשרית: לא לעדכן ולהישאר חשופים, או לעדכן ולאבד את העבודה. על חשיבות העדכונים כתבתי במאמר עדכון וורדפרס בלי לשבור את האתר.
תבנית בת מפרידה בין השניים: תבנית האם מתעדכנת כרגיל, וההתאמות יושבות בתיקייה נפרדת שהעדכון לא נוגע בה.
איך זה עובד
לפי מדריך התבניות הרשמי של וורדפרס, הקובץ היחיד שחובה בתבנית בת הוא style.css, עם כותרת קובץ שמכילה את השדה Template — שמה של תיקיית תבנית האם:
/* Theme Name: My Theme Child Template: parent-theme-folder */
משם, וורדפרס פועל לפי כמה כללים פשוטים:
- קבצי תבנית נדרסים. אם בתבנית הבת יש קובץ באותו שם כמו בתבנית האם — למשל
single.phpאו חלק תבנית — הגרסה של תבנית הבת היא שתוצג. functions.phpלא נדרס. שני הקבצים נטענים, ושל תבנית הבת נטען ממש לפני של תבנית האם. לכן לא מעתיקים פונקציות מתבנית האם — הגדרה כפולה של אותה פונקציה גורמת לשגיאה קריטית.- אפשר להוסיף תבניות, חלקי תבנית ותבניות עיצוב (patterns) שאין בתבנית האם.
- רק שתי רמות. אין "תבנית נכדה" — ההיררכיה היא תבנית אם ותבנית בת בלבד.
טעינת ה-CSS תלויה בתבנית האם: יש תבניות שטוענות גם את גיליון הסגנונות של הבת, ויש כאלה שדורשות לטעון אותו ב-functions.php של הבת. בתבניות בלוקים, הרבה מהעיצוב עובר דרך theme.json.
מתי תבנית בת היא הבחירה הנכונה
- האתר בנוי על תבנית מוכנה שמתעדכנת, ואתם רוצים לשנות כמה תבניות עמוד, להוסיף פונקציה או לתקן עיצוב.
- השינויים מוגבלים ומוגדרים — כותרת, פוטר, עמוד מאמר, כמה רכיבים.
- אתם רוצים להמשיך ליהנות מהפיתוח של יוצר התבנית — תיקונים, תאימות לגרסאות חדשות של וורדפרס.
מתי היא כבר לא מתאימה
המדריך הרשמי עצמו מזהיר שהתאמה כבדה מדי בתבנית בת עלולה להפוך לכאב ראש בתחזוקה, וממליץ במקרה כזה להפוך אותה לתבנית מלאה ועצמאית. בפועל, זה קורה כש:
- דרסתם חלק גדול מקבצי התבנית — ואז כל עדכון של תבנית האם צריך בדיקה מול הגרסאות שלכם, כי שינוי בקובץ המקורי לא יגיע לקובץ הדרוס.
- תבנית האם כבדה ומלאה ברכיבים שאתם לא משתמשים בהם — תבנית בת לא מורידה מהמשקל, היא רק מוסיפה מעליו.
- האתר נבנה מאפס לפי עיצוב ייעודי. כאן אין סיבה לרשת מתבנית של מישהו אחר.
| מצב | מה מתאים |
|---|---|
| תבנית מסחרית + כמה שינויים | תבנית בת |
| תבנית מסחרית + שינוי של רוב העמודים | לשקול תבנית עצמאית |
| עיצוב ייעודי לעסק | תבנית ייעודית שנכתבה לאתר |
| שינויי CSS קטנים בלבד | תבנית בת, או ה-CSS הנוסף שבמערכת |
תבנית ייעודית: כשאין תבנית אם
את רוב האתרים שאני בונה בוורדפרס אני בונה על תבנית ייעודית שנכתבת לאתר — כמו האתר הזה. בתבנית כזו אין "קוד של מישהו אחר" שמתעדכן מתחת לרגליים: כל הקוד שייך לאתר, נמצא בניהול גרסאות, ומשתנה רק כשמחליטים לשנות אותו. במקרה הזה תבנית בת לא נדרשת, כי אין עדכון חיצוני שעלול לדרוס משהו. הבעלות על הקוד היא של הלקוח. ההשוואה בין הגישות מפורטת במאמר תבנית וורדפרס: חינמית, פרימיום או ייעודית, ועל ניהול הקוד כתבתי בניהול גרסאות לאתר.
טעויות נפוצות
- העתקת כל קבצי תבנית האם לתבנית הבת — ואז אף עדכון לא באמת מגיע לאתר.
- העתקת פונקציות מ-
functions.php— גורמת לשגיאה קריטית בגלל הגדרה כפולה. אם תבנית האם מאפשרת, משתמשים ב-hooks במקום. - שינוי שם תיקיית תבנית האם — שדה ה-Template כבר לא מוצא אותה, והאתר נשבר.
- עבודה על האתר החי — שינויי תבנית בודקים קודם בסביבת בדיקות.
שאלות נפוצות
אפשר ליצור תבנית בת לתבנית שכבר שיניתי בה קבצים?
כן, אבל קודם צריך לזהות מה שונה — להשוות לגרסה המקורית של אותה גרסת תבנית — ולהעביר את השינויים לתבנית הבת. רק אחרי זה מעדכנים את תבנית האם.
תבנית בת מאטה את האתר?
בפני עצמה כמעט לא. מה שמאט הוא תבנית אם כבדה, או CSS ו-JavaScript נוספים שנטענים מעליה. אם האתר איטי, ההתחלה היא במאמר וורדפרס איטי.
צריכים להתאים תבנית קיימת בלי לאבד עדכונים, או לעבור לתבנית ייעודית? בעמוד בניית אתרי וורדפרס מפורט איך אני עובד, ואפשר לשלוח לי את כתובת האתר.
אהבתם את המאמר?


