WordPress 記事の中でウィジットを表示する方法
WordPress 記事の中でウィジェットを表示するには、ショートコードを使用する方法があります。
まず、WordPress テーマの functions.php
ファイルで、register_sidebar
関数を使用してウィジェットエリアを定義します。
以下は、ウィジェットエリアを 1 つ定義する例です。
function custom_theme_widgets_init() {
register_sidebar( array(
'name'=> 'sidebar-name-001',
'id' => 'sidebar-id-001',
'description' => '設定画面の説明欄に表示したい内容',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
}
add_action( 'widgets_init', 'custom_theme_widgets_init' );
上記の例では、custom_theme_widgets_init
関数が定義されています。この関数は、register_sidebar
関数を呼び出して、Sidebar
という名前のウィジェットエリアを定義しています。
register_sidebar
関数の引数には、以下のような設定を指定することができます。
name
: ウィジェットエリアの名前。id
: ウィジェットエリアの ID。一意である必要があります。description
: ウィジェットエリアの説明。before_widget
: ウィジェットの前に表示する HTML コード。after_widget
: ウィジェットの後に表示する HTML コード。before_title
: ウィジェットタイトルの前に表示する HTML コード。after_title
: ウィジェットタイトルの後に表示する HTML コード。
add_action
関数を使用して、custom_theme_widgets_init
関数を widgets_init
アクションにフックしています。これにより、WordPress がウィジェットエリアを初期化するときに、custom_theme_widgets_init
関数が実行されるようになります。
上記の例では、1 つのウィジェットエリアの定義しか行っていませんが、複数のウィジェットエリアを定義することもできます。register_sidebar
関数を複数回呼び出すことで、複数のウィジェットエリアを定義することができます。
次に、functions.php
ファイルに以下のコードを追加して、ショートコードを登録します。
function custom_widget_shortcode($atts) {
ob_start();
dynamic_sidebar($atts['name']);
$output = ob_get_clean();
return $output;
}
add_shortcode('widget', 'custom_widget_shortcode');
上記のコードでは、custom_widget_shortcode
関数が定義されています。この関数は、dynamic_sidebar
関数を呼び出して指定されたウィジェットエリアを表示します。また、ob_start
関数と ob_get_clean
関数を使用して、ウィジェットの出力をバッファリングしています。
次に、記事の本文中でショートコードを使用して、ウィジェットを表示します。以下のように書くことができます。
[
]上記の例では、name
属性にウィジェットエリアの ID を指定しています。この ID は、最初に設定したように、functions.php
ファイルで register_sidebar
関数を使用して定義されている必要があります。