Webサイトのお困りごとはこちらへ

【Snow Monkey】サイドバーウィジェットエリアと追尾サイドバーウィジェットエリアを全ページに表示するカスタマイズ方法

ハシビィくん

アーカイブページなどにもサイドバーを表示させたいっすけど、機能として備わってないっす。

カピーさん

Snow Monkeyには備わっていないけど、紹介するコードで簡単に実装できるぞ!

今回のカスタマイズは『Snow Monkey』には機能としては、用意されていないためPHPで制御させる形になります。

ウィジェットの追加はWordPressの基本操作になりますので、本記事では説明を省かせてもらいます。

目次

サイドバー表示のカスタマイズコード

本カスタマイズを利用する前に、ウィジェットのご用意をお願いいたします。ウィジェットのご用意がない場合、画面上で実装確認ができません。

下記コードを『My Snow Monkey』のmy-snow-monkey.phpに追記をしてください。小テーマの作成済みの場合は、小テーマのfunction.phpに追記とお使いの環境に合わせてご利用ください。

// Snow Monkeyのデフォルトのサイドバー出力処理を無効化する(優先度20のアクションを解除)
remove_action( 'snow_monkey_sidebar', 'snow_monkey_sidebar_add_sidebar_widget_area', 20 );

// カスタムのサイドバー出力関数を定義
function my_snow_monkey_sidebar_add_sidebar_widget_area() {
	// WooCommerceページかどうかを判定(WooCommerceが有効な場合)
	if ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) {
		// WooCommerce専用のサイドバーウィジェットエリアを表示(存在する場合)
		snow_monkey_the_woocommerce_sidebar_widget_area();
	} else {
		// 通常のサイドバーウィジェットエリアを表示
		snow_monkey_the_sidebar_widget_area();
		// 追尾(スティッキー)サイドバーウィジェットエリアも表示
		snow_monkey_the_sidebar_sticky_widget_area();
	}
}

// 上記のカスタム関数を、Snow Monkeyの'snow_monkey_sidebar'アクションに登録(優先度20)
add_action( 'snow_monkey_sidebar', 'my_snow_monkey_sidebar_add_sidebar_widget_area', 20 );

snow_monkey_the_sidebar_widget_area():通常のサイドバーのウィジェットを表示するSnow Monkeyの関数です。

snow_monkey_the_sidebar_sticky_widget_area():追尾型(スクロールしても残る)サイドバーを表示します。

is_woocommerce():WooCommerceプラグインが有効な場合にしか存在しない関数なので、安全のため function_exists() を併用しています。

優先度20はデフォルトの処理と同じ優先度なので、順序を揃えるために明示しています。

※テーマのアップデートで動かなくなることがあるので、定期的に表示を確認してください。

サイドバーを条件付けして表示させたい場合

条件付きでサイドバーや追尾サイドバーの表示を制御したい場合は、WordPressの条件分岐タグ(例:is_single()is_page()is_front_page() など)を使って、ページの種類や投稿タイプに応じて表示内容を切り替えます。これにより、たとえば「ブログ記事では追尾サイドバーを表示」「固定ページでは通常サイドバーだけ」といった柔軟なカスタマイズが可能になります。

よく使う条件分岐タグの例

条件タグ説明
投稿ページis_single()通常のブログ記事ページ
固定ページis_page()「お問い合わせ」などの静的ページ
トップページis_front_page()サイトのトップページ
アーカイブページis_archive()カテゴリー・日付別など
投稿タイプ指定get_post_type() === '○'カスタム投稿タイプに対応

上記タグを組み込んだサンプルが下記コードになります。

if ( is_single() && get_post_type() === 'post' ) { ... }

これを先ほどまでのコードと組み合わせると、

// Snow Monkeyのデフォルトのサイドバー出力を無効にする
remove_action( 'snow_monkey_sidebar', 'snow_monkey_sidebar_add_sidebar_widget_area', 20 );

// カスタムのサイドバー出力処理を追加
function my_snow_monkey_sidebar_add_sidebar_widget_area() {

	// 投稿ページ(postタイプ)の場合
	if ( is_single() && get_post_type() === 'post' ) {
		// 通常サイドバーを表示
		snow_monkey_the_sidebar_widget_area();
		// 追尾サイドバーも表示
		snow_monkey_the_sidebar_sticky_widget_area();

	} else {
		// それ以外のページでは通常サイドバーのみ表示
		snow_monkey_the_sidebar_widget_area();
	}
}

// カスタムサイドバー表示処理をフックに登録(優先度20で)
add_action( 'snow_monkey_sidebar', 'my_snow_monkey_sidebar_add_sidebar_widget_area', 20 );
  • 投稿ページ(post:通常サイドバー+追尾サイドバーを表示
  • 固定ページやカスタム投稿タイプなどそれ以外:通常サイドバーのみ表示
  • WooCommerceなど特別な処理が不要な場合にシンプルな構成

まとめ:サイドバーウィジェットエリアと追尾サイドバーウィジェットエリアを全ページに表示するカスタマイズ方法

Snow Monkeyで全ページに共通のサイドバーと追尾サイドバーを表示するには、テーマがもともと用意しているサイドバー表示の処理を無効にし、自分で表示内容をカスタマイズする必要があります。その際、WooCommerceページなど特別なページへの対応も考慮すると柔軟な実装ができます。処理の追加はテーマのフック(アクション)を使って行い、サイドバーの構成を明確に制御するのがポイントです。

サイドバーウィジェットエリアと追尾サイドバーウィジェットエリアを全ページに表示するカスタマイズ方法
  • サイドバーのウィジェットエリアが「外観 > ウィジェット」で表示されているか確認しましょう。
  • WooCommerce専用の関数は、使えない場合もあるので事前にチェックすると安心です。
  • テーマのアップデートで動かなくなることがあるので、定期的に表示を確認しましょう。
この記事をシェアする

コメント(承認制)

コメントする

目次