免責事項: 私はWPに新しいブランドスパンキングです。
Starkers HTML 5フレームワークテーマ を使用しています。 functions.php
で私はこのコードを見ます:
function starkers_widgets_init() {
// Area 1, located at the top of the sidebar.
register_sidebar( array(
'name' => __( 'Primary Widget Area', 'starkers' ),
'id' => 'primary-widget-area',
'description' => __( 'The primary widget area', 'starkers' ),
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
// Area 3, located in the footer. Empty by default.
register_sidebar( array(
'name' => __( 'First Footer Widget Area', 'starkers' ),
'id' => 'first-footer-widget-area',
'description' => __( 'The first footer widget area', 'starkers' ),
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
// ... more calls to register_sidebar() ...
}
そしてfooter.php
で私はこのコードを見ます:
<?php get_sidebar( 'footer' ); ?>
get_sidebar()
がその文字列引数をどのようにしてregister_sidebar()
で定義されている適切なウィジェットを見つけるのかをどうやって知っているかわかりません。 functions.phpスニペットで私は上に投稿しました。 name
、id
およびdescription
プロパティを除いて、「フッター」についての言及はありません。しかし、get_sidebar()
がこれらのプロパティの中で 'footer'を検索することは私には奇妙に思えるでしょう。
これは私が求めていることに意味がありますか?足りないものはありますか?
私が求めているのは、WPアーキテクチャについてもっと知りたいのですが - カスタムウィジェット領域を定義し、それを特定のページにレンダリングする方法を知りたいからです。
トンありがとう。
index.php
から get_sidebar()
を呼び出すだけで、テーマファイルsidebar.php
がロードされます。
一方、 register_sidebar()
は、テーマがサポートしている場合にプラグインなどが動的にsidebar.php
ファイルにコンテンツを追加したいウィジェットに使用されます。
あなたの場合、あなたのテーマのディレクトリにsidebar-footer.php
というファイルがありますか?
私はget_sidebar()
を気にすることはありません。代わりに私はdynamic_sidebar()
を使います。これを次のように呼びます。
dynamic_sidebar('first-footer-widget-area');
そしてそれはサイドバー全体の面倒を見る。これ以上ファイルを含める必要はなく、雑然としたテーマフォルダもありません。私が5つの異なるサイドバーを使いたいのであれば、ファイルを追加するのではなく、functions.php
内の追加の関数のみを追加します。
get_sidebar('name')
は、sidebar-name.php
という名前のサイドバーテンプレートを取得します。
Sidebar-name.php内には、サイドバー用のHTMLと、ウィジェットが移動する場所であるdynamic_sidebar('some-name-hopefully-the-same')
への呼び出しがあります。
register_sidebar(array(name=>'some-name-hopefully-the-same', ...))
はdynamic_sidebarが機能するためのものです。
ご覧のとおり、get_sidebar(templatename)
はサイドバーテンプレートで使用するためのものです。あなたがそれらを必要としていない場合は、単にあなたのテーマから直接dynamic_sidebar(sidebarname)
を呼び出すことができます。
get_sidebar('footer')
はアクティブなテーマからsidebar-footer.php
をロードしようとします。 Starkersはこのファイルを提供しています。 starkers/sidebar-footer.php
をチェックすると、状況は明らかになるはずです。