WordPressの高機能な有料テーマ「Emanon Premium」を用いて、サイトの各カテゴリー、ページ、投稿ごとにサイドバーを変更させるカスタマイズをしました。
背景
クライアントのウェブサイトリニューアルプロジェクトで、「Emanon Premium」を採用。クライアントからは、サイトの各セクションでサイドバーを使い分けたいという具体的な要望が寄せられました。しかし、「Emanon Premium」のデフォルト機能では、この要望を直接満たす方法が見当たりませんでした。(探しきれていないだけかもしれません・・・)
解決策の模索
解決策を求めて、GoogleやChatGPTなどの情報源を駆使して調査を行いました。 プラグインを利用する方法や直接プログラムを修正するアプローチが考えられましたが、プラグインにはそれなりのデメリットもあり、また「Emanon Premium」のコードは複雑で、簡単には手を出せませんでしたが、根気よくテーマのソースに手を入れるカスタマイズをする事にしました。
具体的なカスタマイズ手順
カスタマイズの過程では、以下のウェブサイトを参考にさせていただきました。
Emanon Premium でサイドバーを呼び出す関数「get_sidebar()」が書かれているのは
template-parts/layout/page/page-layout.php
template-parts/layout/post/post*.php
このあたり。
今回は、固定ページのサイドバーを変更。
特定の固定ページ(例:会社案内)のサイドバーをカスタマイズします。
元テーマから template-parts/layout/page/page-layout.php をコピーして 小テーマのディレクトリに上記ディレクトリを作りながら page-layout.php を配置。
page-layout.php 81行目の get_sidebar(); を
if ( 'one-col' !== $col ) {
if(is_page('29')):
get_sidebar('campany');
else:
get_sidebar():
endif
}
と変更。(数字の29は、固定ページ会社案内の ID、campany は、会社案内だから campany としました。)
次に 元テーマから sidebar.php コピーして、小テーマのディレクトリに sidebar-campany.php とリネームして配置 sidebar-campany.php 48行目の
get_template_part( 'template-parts/parts/sidebar/sidebar-widget' );
をコメントアウトして
if (!dynamic_sidebar('sidebar-campany')) {}
//get_template_part( 'template-parts/parts/sidebar/sidebar-widget' );
とする。
これでウィジットが表示出来るようになります。
ウィジット画面に出てくるようにする為に、すでに小テーマにある functions.php に
register_sidebar(array(
'name' => __('会社案内:サイドバー'),
'description' => __('sidebar-campany.php'),
'id' => 'sidebar-campany',
'before_title' => '
<div class="widget-title">',
'after_title' => '</div>
',
'before_widget' => '
<div id="%1$s" class="widget-wrapper %2$s">',
'after_widget' => '</div>
'
));
を記述して完了
まとめ
1、template-parts/layout/page/page-layout.php 小テーマへの配置と if 文の追加
2、sidebar-campany.php 小テーマへの配置と書き換え
3、functions.php への追記
この3ステップで個別のサイドバーを用意できる。 ウィジットにも対応しているので便利ではあるが、なるべくならコーディングしないで実装したかったです。
Emanon Premium 的に正しいカスタマイズかどうかはわからないが、実現できたので良しとします。