web-dev-qa-db-ja.com

登録されているサイドバーの名前をそのIDで取得する方法

このコードが "functions.php" にあるとしましょう。

function mytheme_widgets_init() {
    register_sidebar( array(
        'name'          => esc_html__( 'Sidebar Name', 'mytheme' ),
        'id'            => 'sidebar-2',
        'description'   => '',
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget'  => '</aside>',
        'before_title'  => '<h2 class="widget-title">',
        'after_title'   => '</h2>',
    ) );
}
add_action( 'widgets_init', 'mytheme_widgets_init' );

どうやってそのサイドバーの名前をそのID、ある種のこのコードで得ることができますか?

get_dynamic_sidebar_name( 'sidebar-2' ); // -> Sidebar Name
3
5ervant

サイドバーはグローバル変数$wp_registered_sidebarsに格納されます。この変数を使ってサイドバーのプロパティを取得できます。

global $wp_registered_sidebars;
if ( isset( $wp_registered_sidebars['sidebar-2'] ) ) { 
    echo $wp_registered_sidebars['sidebar-2']['name'];
}

widgets_initフックの前後やテンプレートファイルの中では、早めに使用しないでください。

3
Sumit