Dette er sidste introduktion til child-tema.
Du kan læse Første del her, Anden del her, Tredje del her
Det handler brugen af functions.php i child-temaet. Funktioner er det der kan give vores tema specielt indhold, og i child-temaet skulle vi så være istand til at ændre en funktion så den tilpasses vores behov.
Her er et eksempel:
I twentyten findes følgende funktion:
function twentyten_page_menu_args( $args ) {
$args['show_home'] = true;
return $args;
}
Denne funktion sørger for at første menu på menubjælken hedder "home" på engelsk eller "forside på dansk.
Jeg ønsker nu at ændre home/forside til "Introduction" eller oversættelse der af (ved hjælp af tema-lokaliseringsfilen), så jeg vil gerne rette funktionen til:
function twentyten_page_menu_args( $args ) {
$args['show_home'] = __('Introduction', twentyten);
return $args;
}
Nu skulle man så tro at man bare skriver denne funktion ind i functions.php i child-temaet og så vil alt virke - men nej!
Modsat style.css, header.php, footer.php andre tema-filer, så indlæses functions.php for child-temaet først, så det vil ikke overskrive funktioner fra det originale tema og det vil så ikke virke.
På Wordpress.org kommer denne opfordring til Tema-udviklere om at gøre deres temaer child-tema venlige:
TIP FOR THEME DEVELOPERS. The fact that a child theme’s functions.php is loaded first means that you can make the user functions of your theme pluggable —that is, replaceable by a child theme— by declaring them conditionally. E.g.:if (!function_exists('theme_special_nav')) {
function theme_special_nav() {
// Do something.
}
}In that way, a child theme can replace a PHP function of the parent by simply declaring it again.
Det er egentlig en smuk og enkel tankegang, samt en enkel tilføjelse at gøre til temafunktioner.
[Brok] Hvorfor har man ikke gjort dette på standard-temaerne: TwentyTen, TwentyEleven og TwentyTwelve? Hvis jeg selv foretager foreslåede ændring i standardtemaet så forsvinder jo fidusen med at gemme i child for at undgå opdatingssletning [/Brok]
Så nu sidder jeg tilbage med et problem. Jeg skal nu selv skrive hele funktionen som definerer menu-bjælken. Dette ligger både uden for denne child-tema introduktions rammer og min kapacitet. Hjælp!
resolved