web-dev-qa-db-ja.com

さまざまなページテンプレート上のさまざまなウィジェット

いくつかの異なるPageテンプレートがある場合、これらのテンプレートごとに異なるサイドバーウィジェットのコレクションを表示するにはどうすればよいですか。出発点としてStarkersテーマを使用しています。

4
cannyboy

Functions.phpファイルにサイドバーをさらに作成してから、ページテンプレートを編集して必要なサイドバーを呼び出す必要があります。

サイドバーを追加する

Functions.phpファイルに入ります。サイドバーがすでに登録されているのがわかります。コードは次のようになります。

//Adds default sidebar
 if ( function_exists('register_sidebar') )
 register_sidebar();

別のサイドバーを追加するには、既存のサイドバーの登録後に以下のコードを何度も追加します。

//Registers new sidebar
if ( function_exists('register_sidebar') ) {
    register_sidebar(array('name' => 'Name Sidebar Here','before_widget' => '','after_widget' => '','before_title' => '<h2 class="widgettitle">','after_title' => '</h2>'));    
} 

「Sidebarここに名前を付ける」と表示されている場所に、この新しいサイドバーの論理名を入力します。あなたのテーマがそのデザインのためにそれを必要とするならば、配列の残りの部分はあなたがウィジェットの前にHTML(before_widget)を置き、ウィジェットの後にHTMLを置くことを可能にします(after_widget)。また、テーマでより一般的に使用されているのは、ウィジェットタイトルのカスタムスタイルです。そのHTMLをタイトルの前(before_title)とタイトルの後(after_title)に置くことができます。上記の例では、各ウィジェットのタイトルの前後に<h2 class="widgettitle">が配置され、開始タグが閉じられます。

ページテンプレートに新しいサイドバーを追加します

サイドバーを追加したので、ページテンプレートの好きな場所に配置する必要があります。デフォルトのサイドバーがあなたのテンプレートのどこで呼び出されているか(通常)を見つけて次のコードで置き換えてください。番号はサイドバーがfunctions.phpファイルで追加された場所の順番です。

<?phpif ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(Sidebar number here) ) : ?><?php endif; ?>

このサイドバーはfunctions.phpファイルに追加された2番目のものです。そのため、ページテンプレートで呼び出すには、!dynamic_sidebar(Put sidebar number here) )の中に2を入れます。

ウィジェットを追加する

ページテンプレートに追加したら、[外観] - > [ウィジェット]管理ページのサイドバーにウィジェットを追加するだけです。新しいサイドバーが、functions.phpファイルで付けた名前でそこに表示されます。

お役に立てれば!

8
Joshua Lynch

そして ウィジェットロジック もオプションです。

3
ZaMoose
  1. Widget Logicは1つの解決策です - それも良いものです。

  2. Functions.phpですべてのbefore/after _widgetマークアップを完全にカスタマイズできるので、マルチサイドバーはより堅牢なソリューションです。言うまでもなく、これらのサイドバーはいくつでも作成できます。

  3. より軽量な解決策は、単にCSS上のページのタイプを区別するためにボディクラスを使用することです。あなたがしたくないものを隠し、あなたがするものを表示してください。そのようなことを起こさせるための、迅速で簡単な方法です。

1
eddiemoya

別の解決策は Display-Widgets pluginです。サイドバーでアクティブにしたすべてのウィジェットにドロップダウンメニューを追加し、表示または非表示にするページ/投稿を選択できます。

1
Philip

他の2つのオプション:1. 'sidebar.php'をより複雑にする代わりに、新しいウィジェットサイドバーを新しいサイドバーファイル 'sidebar-xxx.php'に追加してから、ページテンプレートで使用します。

  1. contextual-widgets pluginを使えます
0
hannit cohen