Je souhaite créer une nouvelle zone de widget dans l'encadré de mon thème enfant. Quelle serait la meilleure façon de faire cela?
Voici le code de l'une des barres latérales du thème parent:
<?php
add_action( 'widgets_init', 'ci_widgets_init' );
if ( ! function_exists( 'ci_widgets_init' ) ) :
function ci_widgets_init() {
register_sidebar( array(
'name' => __( 'Blog Sidebar', 'ci_theme'),
'id' => 'blog-sidebar',
'description' => __( 'The list of widgets assigned here will appear in your blog posts.', 'ci_theme'),
'before_widget' => '<aside id="%1$s" class="widget %2$s group">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title"><span>',
'after_title' => '</span></h3>',
) );
}
Puis-je simplement changer les variables name
, id
et description
et les placer dans le fichier functions.php
de mon thème enfant?
Eh bien, c'est ce qui a fonctionné pour moi. Dans mon fichier functions.php
j'ai mis le code suivant:
function header_widgets_init() {
register_sidebar( array(
'name' => 'Header Sidebar',
'id' => 'header_sidebar',
'before_widget' => '<aside class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
}
add_action( 'widgets_init', 'header_widgets_init' );
... et dans mon fichier header.php
que j'ai utilisé:
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('header_sidebar') ) : endif; ?>
La réponse courte est oui, ajouter le widget directement dans le fichier functions.php du thème enfant est parfaitement acceptable.
Certains thèmes parents fournissent des recommandations sur la meilleure façon d'ajouter de nouvelles fonctionnalités dans les thèmes enfants (aides, classes, modèles de conception spécifiques, etc.). L'approche idéale peut donc varier d'un thème à l'autre.
Je serai ravi de préciser si vous pouvez fournir des informations supplémentaires sur votre configuration.