PR

WordPress のテーマ Emanon Premiumで実現するページ別サイドバーのカスタマイズ プラグイン無し

wordpress
記事内に広告が含まれている事があります。

WordPressの高機能な有料テーマ「Emanon Premium」を用いて、サイトの各カテゴリー、ページ、投稿ごとにサイドバーを変更させるカスタマイズをしました。

背景

クライアントのウェブサイトリニューアルプロジェクトで、「Emanon Premium」を採用。クライアントからは、サイトの各セクションでサイドバーを使い分けたいという具体的な要望が寄せられました。しかし、「Emanon Premium」のデフォルト機能では、この要望を直接満たす方法が見当たりませんでした。(探しきれていないだけかもしれません・・・)

解決策の模索

解決策を求めて、GoogleやChatGPTなどの情報源を駆使して調査を行いました。 プラグインを利用する方法や直接プログラムを修正するアプローチが考えられましたが、プラグインにはそれなりのデメリットもあり、また「Emanon Premium」のコードは複雑で、簡単には手を出せませんでしたが、根気よくテーマのソースに手を入れるカスタマイズをする事にしました。

具体的なカスタマイズ手順

カスタマイズの過程では、以下のウェブサイトを参考にさせていただきました。

404 Error - Not Found

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 的に正しいカスタマイズかどうかはわからないが、実現できたので良しとします。

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