• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

「テーマのウィジェット対応」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(新しいウィジェットエリアを表示するには)
(テーマ内の複数サイドバーすべてを動的ウィジェットエリアにするには)
62行目: 62行目:
 
プログラマーでない方は、[[WordPress ウィジェット]]/[[:en:WordPress_Wdigets|en]]ページをご覧ください。
 
プログラマーでない方は、[[WordPress ウィジェット]]/[[:en:WordPress_Wdigets|en]]ページをご覧ください。
  
==テーマ内の複数サイドバーすべてを動的ウィジェットエリアにするには==
+
=== カスタム関数を使用して新しいウィジェット領域を作成するには ===
  
register_sidebar() の代わりに register_sidebars(n) を使用してください。n はサイドバーの数です。そして 1 から始まる適切な数字を dynamic_sidebar() 関数に入れれます (こうした関数の使い方は他にもいくつかあります。[[WordPress_ウィジェット_API|API]] を参照してください)。
+
WordPressやテーマ特定のフックを使用すると、親または子テーマ関数ファイルから直接あなたのテーマに新しいウィジェット領域を表示できます。
  
数字ではなくサイドバー名を与えることもできます。各テーマ用に保存した別々のセットをメンテナンスできます。プラグインについてもっと知りたければ API をお読みください。
+
<pre>
 +
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' );
 +
</pre>
 +
 
 +
 
 +
上記のコードはすべて投稿ページや固定ページのthe_contentタグ[http://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_content] より前に新しいウィジェットの領域を表示しますが、あなたのテーマにフィルターが含まれている場合、テーマ固有のフックを使用するお勧めします。
 +
 
 +
 
 +
Note: この例では投稿する前に動的サイドバーで使用する同じIDを使用して新しいウィジェット領域を登録する必要があります。
 +
 
 +
<pre>
 +
register_sidebar( array(
 +
'id'          => 'before-post',
 +
'name'        => 'Before Posts Widget',
 +
'description' => __( 'Your Widget Description.', 'text_domain' ),
 +
) );
 +
</pre>
  
 
== 関連資料 ==
 
== 関連資料 ==

2015年6月7日 (日) 16:01時点における版

この項目「テーマのウィジェット対応」は、翻訳チェック待ちの項目です。加筆、訂正などを通して、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


最新英語版: WordPress Codex » Widgetizing_Themes最新版との差分