Function uit parent-theme niet in child

Soms staat er een function in een parent-theme die je niet wilt gebruiken in je child theme. Je zou die dan kunnen wegknippen in functions.php van het parent theme, maar het idee van parents en children was juist dat je het parent-theme intact laat. We gingen hier niet voor quick-and-dirty, maar willen een beschaafd child-theme maken!

Het gaat in dit geval om een widget-area die in de parent wordt aangemaakt, en die ik in mijn child niet wil gebruiken.

Omdat het child eerder wordt geladen dan de parent kunnen we niets doen met alleen maar “remove_action“, of “unregister_sidebar“. Immers, zodra de functions van de parent worden geladen, ná die van het child, zal de “remove” of “unregister” weer worden veranderd in “add_action” of “register“…

In één geval gebeurt dat niet: als de functie EXACT dezelfde naam heeft. Dan zal het parent-theme weten dat die functie al is uitgevoerd. Eigenlijk volgens hetzelfde principe zoals dat ook gaat met styles in je css, en bijvoorbeeld een afwijkende single.php: als het child al een single.php heeft wordt die van de parent niet meer gebruikt.

Ik wilde dus in mijn child géén widget area van het parent-theme:

In functions.php van de parent wordt de widget-area gemaakt, daar staat:

[code type=codetype]
// Registers main widget area
if ( ! function_exists(‘wpbootstrap_register_sidebar’) ) {
function wpbootstrap_register_sidebar() {
register_sidebar(array(
‘name’ => __(‘Widgets area’, ‘wpbootstrap’),
‘id’ => ‘sidebar’,
‘description’ => __(‘Widgets area can be used with the Layouts plugin to display widgets of your choice within custom drag&drop cell.’, ‘wpbootstrap’),
‘before_widget’ => ‘<aside id=”%1$s” class=”widget %2$s”>’,
‘after_widget’ => ‘</aside>’,
‘before_title’ => ‘<h3 class=”widget-title”>’,
‘after_title’ => ‘</h3>’,
));
}
add_action(‘widgets_init’, ‘wpbootstrap_register_sidebar’);
}
[/code]

In het child gebruiken we dezelfde naam voor de functie, om hem niet te laten gebeuren:

[code type=codetype]
// Haalt main widget area uit child theme weg:
if ( ! function_exists(‘wpbootstrap_register_sidebar’) ) {
function wpbootstrap_register_sidebar() {
unregister_sidebar( array( ‘name’ => __(‘Widgets area’, ‘wpbootstrap’)) );
}
add_action(‘widgets_init’, ‘wpbootstrap_register_sidebar’);
}
[/code]

Omdat hij precies dezelfde naam heeft wordt de widget-area van de parent niet meer aangemaakt, en heb ik aldus in mijn child alleen mijn eigen childeren-widget-aereas!

Wil je reageren?

Graag!
Je kunt hier een berichtje achterlaten. Het is noodzakelijk daarvoor je naam en emailadres in te vullen. Het emailadres zal nooit openbaar worden gemaakt.
Na goedkeuring door WP-bieb zal je bericht op de website verschijnen.

*