カスタムメニューWidgetのタイトルを動的に表示する

ウィジェットのカスタムメニューのタイトルは、ウィジェットのタイトルフィールドに入力した値が表示されますが、

メニューを作成したときの、メニュー名を表示できればメニューの変更に伴ってタイトルも自動的に変更することができます。

テンプレートに関数を記述して、タイトルを動的に設定する方法

$nobita_location= 'primary';
	/* location の menu idの取得 */
		$nobita_menus = get_nav_menu_locations();
		$nobita_menu_id= $nobita_menus[$nobita_location];
	/* menuのデータを取得 */
		$nobita_menu_object= wp_get_nav_menu_object( $nobita_menu_id );

		printf( '<h2>%1$s</h2>', $nobita_menu_object->name );

		wp_nav_menu( array( 'theme_location' => $nobita_location, 'menu'=> 'primary' ) );

フィルタを使って、ウィジェットのタイトルを動的に切り替える方法

functions.phpに記述します。

add_filter( 'widget_title', 'dinamic_menu_widget_title', 10, 3 );

function dinamic_menu_widget_title( $title, $instance , $id_base ){

	if( $id_base== 'nav_menu' && empty( $title ) ){
	
		$menu_object= wp_get_nav_menu_object( $instance['nav_menu'] );
		return esc_html( $menu_object->name ); 	
	}
	return $title;
}