ウィジェットをショートコードにして任意の場所で表示する

「ウィジェット」はWordPressの標準機能で、特にサイドバーのバナーエリアや新着情報のリスト表示などの管理に使うものですが、ページから独立しているので簡易なCMSとしても使うことができます。
そこで今回は、ページの好きな場所にこのウィジェットを貼ることができるように、ウィジェットをショートコードにして任意の場所で表示する方法についてご紹介します。

テーマのfunctions.phpに以下を追記します。

function custom_widgets_init()
{
  register_sidebar(array(
    'name' => 'バナー',
    'id' => 'sidebar-1',
    'before_widget' => '',
    'after_widget' => '',
    'before_title' => '',
    'after_title' => '',
  ));
}
add_action('widgets_init', 'custom_widgets_init');
 
 
if (!function_exists('display_banner')) {
  function display_banner()
  {
    if (is_active_sidebar('sidebar-1')) {
      ob_start();
      dynamic_sidebar('sidebar-1');
      return ob_get_clean();
    }
    return false;
  }
  add_shortcode('display_banner', 'display_banner');
}

すると[外観]メニュー内に[ウィジェット]メニューが現れ、[ウィジェット]メニューを開くと「バナー」というブロックが見えると思います。
このブロックにウィジェットをドラッグ&ドロップし、中身を作って保存しましょう。
あとはコンテンツエディターの任意の場所に下のショートコードを貼り付けるだけです。

[display_banner]

貼り付けた場所にバナーウィジェットが表示されます。