web-dev-qa-db-ja.com

複数のサイドバーを作成するための最良の方法

私はhow to make multiple sidebarsをよく知っています。しかし、私は自分のやり方が複数のサイドバーを追加するのに適切な方法ではないと思います。

これは私が複数のサイドバーを追加する方法です

単にサイドバーを作成したい場合は、sidebar.phpファイルを使用します。しかし、もし私が他のサイドバーを使いたいのなら、私はsidebar-new.phpのような他のphpファイルを作らなければなりません。それからこのファイルを

 <?php 
      get_sidebar('new'); 
 ?>

つまり、4つのサイドバーを作成したい場合は、4つのphpファイルを作成する必要があります。

しかし、私はたくさんのサイドバーを提供する多くのテーマ(ワードプレスマーケットで)を見ましたが、それらはサイドバーのためのphpファイル(sidebar.php)を1つだけ含んでいます!彼らはどのようにそれをしますか?私は以前からGoogleからサイドバーを作成する方法を学びましたが、検索では現在使用している結果のみが得られます(複数のサイドバー用に複数のファイルを作成します)。

それでは、どうすれば複数のphpファイルを作らずに複数のサイドバーを作成できますか。

4
Rishabh

Functions.phpで新しいサイドバーを定義する

<?php

if ( function_exists('register_sidebar') ) {

   register_sidebar(array(
   'before_widget' => '<li id="%1$s" class="widget %2$s">',
   'after_widget' => '</li>',
   'before_title' => '<h2 class="widgettitle">',
   'after_title' => '</h2>'
   ));

}?>

これらの機能が定義されると、追加のサイドバーが[表示]> [ウィジェット]オプションの下のWordPressダッシュボードに表示されます。ここで、ウィジェットをすべてさまざまなサイドバーにドラッグアンドドロップできます。

<?php

if ( function_exists('register_sidebar') ) {

   register_sidebar(array(
   'name' => 'sidebar 1',
   'before_widget' => '<div id="%1$s" class="widget %2$s">',
   'after_widget' => '</div>',
   'before_title' => '<h2>',
   'after_title' => '</h2>'
    ));

   register_sidebar(array(
   'name' => 'footer sidebar 1',
   'before_widget' => '<div id="%1$s" class="widget %2$s">',
   'after_widget' => '</div>',
   'before_title' => '<h2>',
   'after_title' => '</h2>'
   ));

}?>

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

Sidebar.phpファイル内で、以前のfunctions.phpファイル内で定義した名前を含めるように既存のサイドバーへの呼び出しを変更します。

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar 1') ) : ?>

   <h2>Articles by month</h2>
   <ul>
      <?php wp_get_archives('title_li=&type=monthly'); ?>
   </ul>
   <h2>Categories</h2>
   <ul>
      <?php wp_list_categories('show_count=0&title_li='); ?>
   </ul>

<?php endif; ?>

新しいサイドバーを追加するには、上記のコードをコピーするか、単に次の行をコピーします。新しいウィジェットを表示する場所にこれらの行を追加します。この例では、私のWebサイトのフッターに私が配置されていることがわかります。以前と同様に、正しいサイドバー名を指定することを忘れないでください。上記のコードで、phpステートメントの間に表示されるHTMLは、サイドバーに追加されたウィジェットがない場合に表示されるものです。この「デフォルト」のコードは明らかにあなたのテーマに合うように修正することができます。次のコードでは、余分なHTMLがないため、WordPressダッシュボード内のサイドバーにウィジェットが追加されていない限り、何も表示されません。

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('footer sidebar 1') ) : ?>
<?php endif; ?>
6
Owais Alam

サイドバー inside sidebar.phpを区別できます。私はあなたの目的が何であるかわかりませんが、あなたが単一の投稿/ページと他のページに異なるサイドバーが欲しいとしましょう。

あなたのfunctions.phpでは、通常の方法で register_sidebar を使って2つのサイドバーをidのsingulardefaultに登録します。

それならsidebar.phpには、

if (is_singular) {dynamic_sidebar('singular');}
else {dynamic_sidebar('default');}

もちろん、これを変える方法はたくさんあります。カテゴリに応じて異なるサイドバーを表示することも、「1列」という特別なページテンプレートにサイドバーをまったく表示しないこともできます。

3
cjbj

https://codecanyon.net/item/custom-sidebar-visual-editor-wordpress-plugin/17329853 で、vcまたはwordpressエディタを使用して複数のサイドバーを作成できます。

0
Rachit