はじめに
「タグクラウド」ウィジェットをタグ数で折りたたみ表示に変更します。
サイドバーに「タグクラウド」ウィジェットを配置した際、タグが多すぎると表示が見づらくなることがあります。
そこで、上位10件のタグのみを表示し、残りのタグは非表示にします。
ボタンをクリックすると、非表示のタグが表示される仕組みです。
この記事では、この方法について詳しく説明します。
完成イメージ

実装手順
以下の手順で実装します。
- ラベルJavaScriptを追加
以下のコードをjavascript.jsに追加します。
jQuery(function ($) { // 折りたたみ対象とするタグの項目数を設定 const n = 10; // もっと見るボタンのHTMLを設定 const button = '<div class="tag-cloud__more"></div>'; // サイドバー内にあるタグクラウドを取得 $('.sidebar .widget_tag_cloud').each(function () { const $items = $('.tagcloud a', this); // タグの項目数が指定した制限を超えていない場合は処理対象外 if ($items.length <= n) { return; } // 制限数以降のタグを取得 const $targets = $items.slice(n); // 折りたたみ対象を初期状態で非表示に設定 $targets.hide(); // タグクラウドの末尾にもっと見るボタンを登録 const $btn = $(button).appendTo($('.tagcloud', this)); // もっと見るボタンのクリックイベントを登録 $btn.on('click', function () { // ボタンの開閉状態を active クラスで変更 $btn.toggleClass('active'); // active の状態に合わせて対象項目を表示・非表示 $targets.toggle($btn.hasClass('active')); }); }); }); - ラベルCSSを追加
以下のコードをstyle.cssに追加します。
.tagcloud { .tag-cloud-link { width: 100%; } .tag-cloud__more { border: 1px solid #ccc; cursor: pointer; display: grid; height: 20px; margin: 2px; place-content: center; width: 100%; &::before { color: #ccc; content: '\f078'; display: block; font-family: 'Font Awesome 5 Free'; font-size: 5px; font-weight: bold; } &.active::before { content: '\f077'; } } }
さいごに
今回紹介した方法を使えば、タグクラウドの表示をコンパクトにまとめつつ、ユーザーの操作で全てのタグを表示できるようになります。
タグの多いサイトでは視認性が向上し、デザインもスッキリするため、ぜひ試してみてください。


