【sidebar.php】Lightningのサイドバーをカスタマイズする方法

WordPress

WordPressの無料テーマ、Lightningのサイドバーをカスタマイズする方法を紹介します。
特に前の記事で紹介した「検索フォームをカスタマイズする方法」で検索フォームを作っても、サイドバーの検索フォームには反映されないので、今回紹介する方法でサイドバーをカスタマイズする必要があります。

サイドバーを表示するテンプレート

まずはトップページを表示しているテンプレートindex.phpを見てみましょう。
下記のコードはindex.phpの86行目からです。
8行目のlightning_get_template_part( ‘sidebar’, get_post_type() );でsidebar.phpを呼び出していることが分かります。

<?php
		do_action( 'lightning_sub_section_before', 'lightning_sub_section_before' );
		if ( lightning_is_subsection() ) {
			if ( lightning_is_woo_page() ) {
				do_action( 'woocommerce_sidebar' );
			} else {
				lightning_get_template_part( 'sidebar', get_post_type() );
			}
		}
		do_action( 'lightning_sub_section_after', 'lightning_sub_section_after' );
		?>

次にsidebar.phpを見てみましょう。
18行目にlightning_get_template_part( ‘template-parts/sidebar-contents’, $post_type_info[‘slug’] );とあり、template-partsというディレクトリにあるsidebar-contents.phpを呼び出していることが分かります。

<div class="<?php lightning_the_class_name( 'sub-section' ); ?>">
<?php do_action( 'lightning_sub_section_prepend' ); ?>
<?php
if ( is_active_sidebar( 'common-side-top-widget-area' ) ) {
	dynamic_sidebar( 'common-side-top-widget-area' );
}

if ( is_front_page() ) {
	if ( is_active_sidebar( 'front-side-top-widget-area' ) ) {
		dynamic_sidebar( 'front-side-top-widget-area' );
	}
} else {
	// Display post type widget area.
	$post_type_info    = VK_Helpers::get_post_type_info();
	$widdget_area_name = $post_type_info['slug'] . '-side-widget-area';
	if ( is_active_sidebar( $widdget_area_name ) ) {
		dynamic_sidebar( $widdget_area_name );
	} else {
		lightning_get_template_part( 'template-parts/sidebar-contents', $post_type_info['slug'] );
	}
}

if ( is_active_sidebar( 'common-side-bottom-widget-area' ) ) {
	dynamic_sidebar( 'common-side-bottom-widget-area' );
}
?>
 <?php do_action( 'lightning_sub_section_append' ); ?>
</div><!-- [ /.sub-section ] -->

sidebar.phpの書き方

上記を踏まえてさっそくsidebar.phpを書いてみましょう。
ポイントは既にサイドバーに付与されているclass、idを継承することです。class名、id名を継承することでデフォルトのCSSも継承することができます。

<div class="sub-section sub-section--col--two sub-section--pos--left">
	<aside id="sidebar">
		<div class="side-info">
			<div class="side-c">
			お電話受付時間<br>
			平日10時~18時
			</div>
			<div class="side-t">
			03-0000-0000
			</div>
			<a class="side-i" href="/info">
			<i class="fa-regular fa-envelope"></i>お問い合せ
			</a>
		</div>


		<!--下記2行は検索フォームが不要な場合は書かない-->
		<h4 class="sub-section-title">記事を探す</h4>
		<?php get_search_form(); ?>

		<?php dynamic_sidebar('sidebar'); ?>

	</aside>
</div>

サイドバーのclass名sub-section sub-section–col–two sub-section–pos–leftはsidebar-contents-post.phpに書いてあるのでコピペします。
<?php get_search_form(); ?>は検索フォームの表示が必要ない場合は書かなくでよいです。
<?php get_search_form(); ?>で検索フォームを呼び出すと、searchform.phpでカスタマイズした検索フォームを表示することができます。
<?php dynamic_sidebar(‘sidebar’); ?>はWordPress管理画面からウィジェットを追加するために必要です。

管理画面からウィジェットを追加できるようにする

function.phpに下記のコードを書きます。

if (function_exists('register_sidebar')) {
		register_sidebar(array(
		  'name' => 'sidebar',
		  'id' => 'sidebar',
		  'description' => 'sidebar',
		  'before_widget' => '<div>',
		  'after_widget' => '</div>',
		  'before_title' => '<h4 class="sub-section-title">',
		  'after_title' => '</h4>'
	   ));
}

ウィジェットの追加方法

管理画面の外観→カスタマイズ→ウィジェットをみると、fuction.phpで設定した、sidebarが表示されます。ここにウィジェットを追加するとサイドバーで表示することができます。

完成がこちら

タイトルとURLをコピーしました