web-dev-qa-db-ja.com

テーマのサイドバーの名前と説明を取得する方法

サイドバーを(functions.phpに)登録しています。

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

私のテーマでは、次のように呼んでいます。

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

今私の質問は:テーマのサイドバーの名前(この場合はActivity Calendar)を印刷する方法?サイドバーの名前を取得して印刷する方法はありますか(利用可能な場合は説明もありますか)。

2
sariDon

$wp_registered_sidebarsグローバル変数を使用できます。このような:

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;

WordPressコアでis_registered_sidebar関数をチェックすると、このグローバル変数も使用していることがわかります。

function is_registered_sidebar( $sidebar_id ) {
    global $wp_registered_sidebars;

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

しかし、私の知る限りでは、関数を使ってそれを取り出すことはできません。

ただし、説明のために関数があります:wp_sidebar_description()。説明のためにグローバル変数を使うことも、この関数を使うこともできます。

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