משנים תבנית קיימת בוורדפרס? תעשו את זה עם תבנית-בת

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

טעות פטאלית.

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

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

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

ולבנות תבנית בת זה כל כך פשוט שזה מצחיק! איך עושים את זה? בסך הכל יוצרים תיקיה נוספת. בתוך התיקיה הנוספת יוצרים קובץ אחד ויחיד של style.css ושם כותבים את הפשתגן הבא:


/*
 Theme Name:    whatever sub theme
 Theme URI:      http://www.internet-israel.com
 Description:    whatever subtheme description
 Author:         Ran Bar-Zik
 Author URI:     http://www.internet-israel.com
 Template:       THE_FATHER_THEME_NAME
 Version:        1.0.0
*/

בעוד שכל הטקסטים ניתנים לשינוי ולקיסטום כאוות נפשכם, השורה הזו היא הכי חשובה:


 Template:       THE_FATHER_THEME_NAME

במקום THE_FATHER_THEME_NAME אתם רושמים את שם התיקיה של התיקיה שאותה אנו רוצים לשנות. שימו לב להקפיד על אותיות רישיות, כן? אם שם התיקיה הוא responsive, אל תתחכמו ותכתבו Responsive עם R גדולה – זה צריך להיות בדיוק, אבל בדיוק, כמו שם התיקיה של תבנית האב. לא צריך לבצע כלום יותר.

הדבר הבא שצריך לעשות זה ליצור rtl.css (כי אנחנו חיים בכל זאת במדינה מוכת שחין שהשפה שלה נכתבת מימין לשמאל) ולוודא שהוא מייבא את ה-rtl.css מתבנית האב:


/*
Theme Name: whatever sub theme
Template: THE_FATHER_THEME_NAME
*/

כמובן שגם כאן אנו מקפידים לשנות את THE_FATHER_THEME_NAME לשם התיקיה המדויק של תבנית האב (לא להתחכם עם אותיות רישיות)

על מנת להכליל את קוד ה-CSS של תבנית האב בתבנית הבת עליכם ליצור קובץ PHP ולעדכן את functions.php:


add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );

}

ה-style.css של תבנית הבת נכנס כבר אוטומטית לתבנית הבת ואם אתם רוצים לשנות דברים שם, תצטרכו לעשות CSS override.

ו…זהו! עכשיו אפשר להחליף את התבנית מתבנית האב לתבנית שלכם ולהכניס את השינויים. חשקה נפשכם בלשנות את single.php? תעתיקו אותו מתיקית האב לתיקית התבנית שלכם ותשנו כאוות נפשכם. וורדפרס לא תתחשב יותר ב-single.php שבתבנית האב ותסתכל אך ורק על הקובץ שנמצא בתבנית הבת שלכם. שינויים ב-style וב-rtl.css אפשר להכניס ישירות בקבצים.

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

ואל תגידו 'אין לי כוח', 'זה רק שינוי קטן'.

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

אהבתם? לא אהבתם? דרגו!

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (2 הצבעות, ממוצע: 5.00 מתוך 5)


אל תשארו מאחור! יש עוד מה ללמוד!

2 comments on “משנים תבנית קיימת בוורדפרס? תעשו את זה עם תבנית-בת
  1. חנן כהן הגיב:

    השיטה שאתה מציג כאן כבר לא מומלצת על ידי WordPress

    https://codex.wordpress.org/Child_Themes

    כדאי לעדכן את הפוסט

הצטרפו לעדכונים!

העדכונים נשלחים אך ורק כאשר האתר מתעדכן.

רן בר-זיק

רן בר-זיקכותב כל המאמרים באינטרנט ישראל, מפתח אינטרנט מנוסה במגוון שפות ופלטפורמות.
ניתן ליצור איתי קשר באמצעות:
כתובת המייל שלי: info@internet-israel.com.
פרופיל הלינקדאין שלי

הטוויטר שלי

פרופיל הפייסבוק שלי

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