גם בתבנית המושקעת ביותר, המעוברתת (כלומר מתורגמת) והמרוטלת (כלומר מותאמת לקריאה מימין לשמאל) צריך לפעמים לעשות שינויים והתאמות. לפעמים לא מתאים לנו שיופיע שם הכותב, לפעמים לא מתאים לנו העיצוב של דף הבית ולפעמים זה אפילו דברים יותר גדולים. אחד הדברים שהכי קל לנו לעשות זה פשוט להכנס עם העורך ולשנות את קובץ התבנית בנגיעות קלות ופשוטות ופיניטו לה קומדיה. הקוד של וורדפרס הוא לא קוד יפה, אבל הוא קוד פשוט וקל מאוד לשינוי, לא? שינוי קטן ב-single.php פה, שינוי עדין ב-rtl.css שם ופיניטו לה קומדיה.
טעות פטאלית.
לעולם, אבל לעולם אל תעשו שינוי בתבנית קיימת של וורדפרס. עדיף למות. סליחה, עדיף למות בעינויים קשים מאשר לבצע שינויים בתבנית קיימת של וורדפרס. אם יתנו לי ברירה בין ללכת ערום עם שלט 'אני שונא תימנים' בראש העין לבין לשנות תבנית קיימת של וורדפרס – אני אחפש את האוטובוס הראשון לכיוון ראש העין. כן, עד כדי כך.
למה לא? למה אסור בשום פנים ואופן לשנות תבנית קיימת אלא תמיד תמיד (תמיד!) ליצור תבנית בת? כי ברגע שמשדרגים תבנית באופן אוטומטי בוורדפרס (וזה קורה, תמיד זה קורה, גם אם אתם אומרים לעצמכם שלא תעשו את זה – זה קורה!) כל השינויים נמחקים.
וזה לא משנה אם אתם בונים אתר לעצמכם או ללקוח, לחבר או לדוד הנודניק הזה שתמיד רצה להקים אתר לתחביב הביזארי שלו. תמיד תמיד תמיד מישהו ישדרג משהו ואז התבנית שלכם תידפק ואתם תצטרכו לתקן את הנזק.
ולבנות תבנית בת זה כל כך פשוט שזה מצחיק! איך עושים את זה? בסך הכל יוצרים תיקיה נוספת. בתוך התיקיה הנוספת יוצרים קובץ אחד ויחיד של style.css ושם כותבים את הפשתגן הבא:
/*
Theme Name: whatever sub theme
Theme URI: https://internet-israel.com
Description: whatever subtheme description
Author: Ran Bar-Zik
Author URI: https://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 תגובות
השיטה שאתה מציג כאן כבר לא מומלצת על ידי WordPress
https://codex.wordpress.org/Child_Themes
כדאי לעדכן את הפוסט
הי חנן, עדכנתי את המאמר כנדרש (אני מקווה).