web-dev-qa-db-fra.com

Comment obtenir le nom et la description d'une barre latérale dans le thème?

J'ai une barre latérale enregistrée (en functions.php) en tant que:

<?php
register_sidebar( array(
        'name'          => __('Activity Calendar'),
        'id'            => 'activity_calendar_en',
        'before_widget' => '',
        'after_widget'  => '',
        'before_title'  => '',
        'after_title'   => '',
    ));
?>

Dans mon thème, je l'appelle comme:

<?php
if( is_active_sidebar( 'activity_calendar_en' ) ):
    dynamic_sidebar( 'activity_calendar_en' );
endif;
?>

Maintenant, ma question est la suivante: comment imprimer le nom de la barre latérale (Activity Calendar dans ce cas) dans le thème? Existe-t-il une méthode pour obtenir et imprimer le nom de la barre latérale (ainsi que toute description, le cas échéant)?

3
sariDon

Vous pouvez utiliser la variable globale $wp_registered_sidebars. Comme ça:

global $wp_registered_sidebars;
if( is_active_sidebar( 'activity_calendar_en' ) ):
    esc_html_e( $wp_registered_sidebars['activity_calendar_en']['name'] );
    dynamic_sidebar( 'activity_calendar_en' );
endif;

Si vous vérifiez la fonction is_registered_sidebar du noyau WordPress, vous verrez qu'il utilise également cette variable globale:

function is_registered_sidebar( $sidebar_id ) {
    global $wp_registered_sidebars;

    return isset( $wp_registered_sidebars[ $sidebar_id ] );
}

Cependant, pour autant que je sache, vous ne pouvez pas le récupérer en utilisant une fonction quelconque.

Bien que, pour la description, il existe une fonction: wp_sidebar_description(). Vous pouvez également utiliser la variable globale pour la description ou cette fonction:

if( is_active_sidebar( 'activity_calendar_en' ) ):
    echo wp_sidebar_description( 'activity_calendar_en' );
    dynamic_sidebar( 'activity_calendar_en' );
endif;
2
Fayaz