複数のサイドバーを作成するための最良の方法
私はhow to make multiple sidebars
をよく知っています。しかし、私は自分のやり方が複数のサイドバーを追加するのに適切な方法ではないと思います。
これは私が複数のサイドバーを追加する方法です
単にサイドバーを作成したい場合は、sidebar.phpファイルを使用します。しかし、もし私が他のサイドバーを使いたいのなら、私はsidebar-new.php
のような他のphpファイルを作らなければなりません。それからこのファイルを
<?php
get_sidebar('new');
?>
つまり、4つのサイドバーを作成したい場合は、4つのphpファイルを作成する必要があります。
しかし、私はたくさんのサイドバーを提供する多くのテーマ(ワードプレスマーケットで)を見ましたが、それらはサイドバーのためのphpファイル(sidebar.php)を1つだけ含んでいます!彼らはどのようにそれをしますか?私は以前からGoogleからサイドバーを作成する方法を学びましたが、検索では現在使用している結果のみが得られます(複数のサイドバー用に複数のファイルを作成します)。
それでは、どうすれば複数のphpファイルを作らずに複数のサイドバーを作成できますか。
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; ?>
サイドバー inside sidebar.php
を区別できます。私はあなたの目的が何であるかわかりませんが、あなたが単一の投稿/ページと他のページに異なるサイドバーが欲しいとしましょう。
あなたのfunctions.php
では、通常の方法で register_sidebar
を使って2つのサイドバーをidのsingular
とdefault
に登録します。
それならsidebar.php
には、
if (is_singular) {dynamic_sidebar('singular');}
else {dynamic_sidebar('default');}
もちろん、これを変える方法はたくさんあります。カテゴリに応じて異なるサイドバーを表示することも、「1列」という特別なページテンプレートにサイドバーをまったく表示しないこともできます。
https://codecanyon.net/item/custom-sidebar-visual-editor-wordpress-plugin/17329853 で、vcまたはwordpressエディタを使用して複数のサイドバーを作成できます。