WordPress 記事の中でウィジットを表示する方法

white and blue printer paper

WordPress 記事の中でウィジェットを表示するには、ショートコードを使用する方法があります。

まず、WordPress テーマの functions.php ファイルで、register_sidebar 関数を使用してウィジェットエリアを定義します。

以下は、ウィジェットエリアを 1 つ定義する例です。

php
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 ファイルに以下のコードを追加して、ショートコードを登録します。

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 関数を使用して、ウィジェットの出力をバッファリングしています。

次に、記事の本文中でショートコードを使用して、ウィジェットを表示します。以下のように書くことができます。

php
[widget name="sidebar-nam-001"]

上記の例では、name 属性にウィジェットエリアの ID を指定しています。この ID は、最初に設定したように、functions.php ファイルで register_sidebar 関数を使用して定義されている必要があります。

 

しゅう
しゅう

主に技術系の内容を書いています m(_ _)m

記事本文: 36

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です