register_sidebar()とget_sidebar()はどのように連携しますか?


8

免責事項:私はWPの新しいブランドです。

Starkers HTML5フレームワークテーマを使用しています。で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スニペット。除いて、「フッター」のいずれかの言及がないnameiddescriptionプロパティが。しかし、get_sidebar()これらのプロパティ内で「フッター」を検索するのは私には奇妙に思えます。

これは私が求めていることには意味がありますか?欠けている部分はありますか?

私が尋ねている理由は、-WPアーキテクチャについてもっと知りたい-カスタムウィジェット領域を定義し、特定のページにそれをレンダリングする方法を知りたいからです。

トンありがとう。

回答:


9

あなただけget_sidebar()から呼び出すindex.phpと、それはテーマファイルをロードしますsidebar.php

register_sidebar()一方、sidebar.phpテーマでサポートされている場合、プラグインなどがファイルにコンテンツを動的に追加するウィジェットで使用されます。

あなたの場合、sidebar-footer.phpテーマのディレクトリに呼ばれるファイルがありますか?


9

気にしたことはありませんget_sidebar()。代わりにを使用しますdynamic_sidebar()。次のように呼び出します。

dynamic_sidebar('first-footer-widget-area');

これでサイドバー全体が処理されます。これ以上ファイルを含めたり、雑然としたテーマフォルダーを作成したりする必要はありません。5つの異なるサイドバーが必要な場合、ファイルは追加されず、の追加機能のみが追加されfunctions.phpます。


スターカーの場合、sidebar-footer.php条件付きdynamic_sidebar()ですべての適切なウィジェット領域を呼び出します。
Annika Backstrom、2010

それは本当かもしれませんが、実行しているバージョンがわかっている場合は、条件付きでそれを呼び出す必要はありません。関数を直接呼び出すことができるのに、なぜインクルードを実行するのですか?
John P Bloch、

5

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)は、テーマから直接呼び出すことができます。


3

get_sidebar('footer')sidebar-footer.phpアクティブなテーマからロードを試みます。Starkersはこのファイルを提供しています。チェックstarkers/sidebar-footer.phpと物事が明らかになるはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.