- 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細)
テーマのウィジェット対応
目次
テーマのウィジェット対応とは
ウィジェット対応(Widgetizing)とは、テーマ内にウィジェットやウィジェット領域を実装するプロセスのことです。
ウィジェットの登録
以下をテーマの functions.php ファイルに追加してください。
<?php /** * Register our sidebars and widgetized areas. * */ function arphabet_widgets_init() { register_sidebar( array( 'name' => 'Home right sidebar', 'id' => 'home_right_1', 'before_widget' => '<div>', 'after_widget' => '</div>', 'before_title' => '<h2 class="rounded">', 'after_title' => '</h2>', ) ); } add_action( 'widgets_init', 'arphabet_widgets_init' ); ?>
新しいウィジェット領域を表示するには
sidebar.phpファイルなどのテーマファイルにコードを直接追加するか、 functions.phpファイル内のフックでカスタム関数を使用することで、 新しいウィジェット領域を表示することができます。
以下は、親テーマまたは子テーマにあなたの新しいウィジェット領域を追加する一般的な方法のサンプルコードです。
<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?> <div id="primary-sidebar" class="primary-sidebar widget-area" role="complementary"> <?php dynamic_sidebar( 'sidebar-1' ); ?> </div><!-- #primary-sidebar --> <?php endif; ?>
上記のコードは、あなたのsidebar.phpファイルに追加できます。有効化されている場合、ウィジェットの内容を表示します。
ウィジェットを出力する関数。
<?php dynamic_sidebar( 'sidebar-1' ); ?>
上記のコードは、'sidebar-1'のID値で登録されたウィジェットを表示します。あなたのサイトにウィジェットを表示する場合、ウィジェットを登録したときに指定したID値と’sidebar-1'を置き換えることを忘れないでください。
ウィジェットとウィジェット領域を表示するようプログラムする方法については[WordPress_ウィジェット_API ウィジェット API] ページを参照してください。
プログラマーでない方は、WordPress ウィジェット/enページをご覧ください。
カスタム関数を使用して新しいウィジェット領域を作成するには
WordPressやテーマ特定のフックを使用すると、親または子テーマ関数ファイルから直接あなたのテーマに新しいウィジェット領域を表示できます。
function wpsites_before_post_widget( $content ) { if ( is_singular( array( 'post', 'page' ) ) && is_active_sidebar( 'before-post' ) && is_main_query() ) { dynamic_sidebar('before-post'); } return $content; } add_filter( 'the_content', 'wpsites_before_post_widget' );
上記のコードはすべて投稿ページや固定ページのthe_contentタグ[1] より前に新しいウィジェットの領域を表示しますが、あなたのテーマにフィルターが含まれている場合、テーマ固有のフックを使用するお勧めします。
Note: この例では投稿する前に動的サイドバーで使用する同じIDを使用して新しいウィジェット領域を登録する必要があります。
register_sidebar( array( 'id' => 'before-post', 'name' => 'Before Posts Widget', 'description' => __( 'Your Widget Description.', 'text_domain' ), ) );
リソース
関連資料
サイドバー:
is_active_sidebar(),
is_dynamic_sidebar(),
dynamic_sidebar(),
register_sidebars(),
register_sidebar(),
unregister_sidebar(),
wp_register_sidebar_widget() / en,
wp_unregister_sidebar_widget() / en,
wp_get_sidebars_widgets() / en,
wp_set_sidebars_widgets() / en,
ウィジェット API:
is_active_widget(),
the_widget(),
register_widget(),
unregister_widget() / en,
wp_register_widget_control() / en,
wp_unregister_widget_control() / en,
wp_convert_widget_settings() / en,
wp_get_widget_defaults() / en,
wp_widget_description() / en