ヒートマップ風タグクラウドをカスタマイズしていると、9位以下をどうするかと考えました。
そこで「9位のタブに『▼』を設定して、そこをクリックしたときだけタグ一覧を開くようにしました。
そこで、
- マップ左一番下に「▼ 」を表示「▼ 」をクリックしたときだけ
- マーカー「レ」点が出現して、ドロップダウンを開く
- そして、左空白をクリックすると、「▼ 」表示に戻る
という仕様にしました。
本記事は、その機能を前回の「任意カラー対応ヒートマップ風タグクラウド」に実装する方法を解説します。
これで、ヒートマップデザインを見て楽しみつつ、表示しきれないタブを選択可能にします。
試してみてください。
前回記事

今回のコードも、AIで作成したもので、環境によっては機能しないかもしれません。そのため、コードを追加する場合は注意してください。
念のためにバックアップを推奨します。
仕様
本記事で実装する仕様は次のとおりです。
ポイントは 9位はタグではなく、「▼」を表示して、ナビゲーションとしてのUIにすることです。
| タブ部 | 表示内容 |
|---|---|
| 1〜8位部 | 1〜8位のタグ表示 |
| 9位部 | ▼ のみ表示 |
| ドロップダウン内部 | 9位以降のタグ表示 |
実装方法はシンプルです。
前回のコードと置き換えるだけです。
置き換え手順
作業はシンプルです。
以下の3つを置き換え・追加し、最後にウィジェットなどにショートコードを入れます。
- PHP コード(functions.php)は置き換えです。前回のコードは消して、今回のコードをペーストしてください。
- 追加CSSコードは、前回のコードはそのままで、今回のコードを追加します。
- ショートコードは、一部分を加えてペーストします。
以上で終了です。
置き換え版 PHP コード(functions.php)
以下のコードを、 前回のPHP コード(functions.php) である「custom_tag_cloud_boxed_color_shortcode」 を削除して、以下のコードをペーストします。
置き換え作業なので、消し忘れがないように注意してください。
// 任意カラー対応ヒートマップ風タグクラウド(9位を▼で展開:▼だけクリックで開く)
function custom_tag_cloud_boxed_color_shortcode($atts) {
$atts = shortcode_atts( array(
'number' => 30, // 10位以降も取得
'color' => '#ff0000',
), $atts, 'custom_tag_cloud_boxed_color' );
$base_color = sanitize_hex_color($atts['color']);
if ( ! $base_color ) {
$base_color = '#ff0000';
}
// HEX → RGB
list($r, $g, $b) = sscanf($base_color, "#%02x%02x%02x");
// タグ取得(投稿数順)
$tags = get_tags( array(
'orderby' => 'count',
'order' => 'DESC',
'number' => $atts['number'],
'hide_empty' => true,
) );
if ( empty( $tags ) ) return '';
// 9位以降を dropdown 用に分離
$rest_tags = array_slice($tags, 8);
$html = '<div class="custom-tag-boxed-heatmap-color">';
foreach ( $tags as $i => $tag ) {
$rank = $i + 1;
if ( $rank > 9 ) break;
// opacity(Ver.1.0 固定仕様)
$opacity_map = [1.00, 0.90, 0.79, 0.72, 0.64, 0.57, 0.49, 0.42, 0.34];
$opacity = $opacity_map[$rank - 1];
$bg_color = "rgba({$r}, {$g}, {$b}, " . round($opacity, 2) . ")";
// フォントサイズ
if ($rank === 1) {
$font_size = 38;
} elseif ($rank === 2) {
$font_size = 26;
} else {
$font_size = 24 - (($rank - 3) / 6) * 16;
}
// ★ 9位は「▼」でクリック展開
if ($rank === 9) {
$html .= '<details class="tag-box-color tag-9 tag-etc"
style="background-color:' . esc_attr($bg_color) . '; font-size:' . esc_attr(round($font_size, 2)) . 'px;">';
$html .= '<summary class="tag-etc-summary"><span class="tag-etc-arrow">▼</span></summary>';
// dropdown
if ( ! empty($rest_tags) ) {
$html .= '<div class="tag-etc-panel">
<select class="tag-etc-dropdown"
onchange="if(this.value){window.location.href=this.value;}"
aria-label="その他のタグ">
<option value="">タグを選択</option>';
foreach ($rest_tags as $t) {
$html .= '<option value="' . esc_url(get_tag_link($t->term_id)) . '">'
. esc_html($t->name) . ' (' . intval($t->count) . ')
</option>';
}
$html .= '</select></div>';
}
$html .= '</details>';
continue;
}
// 1〜8位は通常タグ
$html .= '<a href="' . esc_url(get_tag_link($tag->term_id)) . '"
class="tag-box-color tag-' . $rank . '"
style="background-color:' . esc_attr($bg_color) . ';
font-size:' . esc_attr(round($font_size, 2)) . 'px;"
title="' . esc_attr($tag->count) . ' 件の投稿">
<span>' . esc_html($tag->name) . '</span>
</a>';
}
$html .= '</div>';
return $html;
}
add_shortcode('custom_tag_cloud_boxed_color', 'custom_tag_cloud_boxed_color_shortcode');
置き換え版 PHP コード
追加CSS(マーカー「▼」)
手順:外観 → カスタマイズ → 追加CSS に進んで追記します。前回のCSSはそのままです。
/* 標準detailsマーカー(レ・三角)を消す */
.custom-tag-boxed-heatmap-color .tag-etc summary::-webkit-details-marker { display:none; }
.custom-tag-boxed-heatmap-color .tag-etc summary::marker { content:""; }
/* 9位タブを中央寄せ */
.custom-tag-boxed-heatmap-color .tag-etc{
display:flex;
align-items:center;
justify-content:center;
padding:0;
}
/* ▼だけクリック可能にする */
.custom-tag-boxed-heatmap-color .tag-etc-summary{
padding:0;
margin:0;
width:auto;
height:auto;
display:inline-flex;
align-items:center;
justify-content:center;
cursor:pointer;
list-style:none;
}
/* ▼表示を大きくする(誘導UI) */
.custom-tag-boxed-heatmap-color .tag-etc-arrow{
font-size:16px;
font-weight:700;
line-height:1;
}
/* 開いた中身 */
.custom-tag-boxed-heatmap-color .tag-etc-panel{
padding:8px 10px 10px;
width:100%;
}
/* dropdown */
.custom-tag-boxed-heatmap-color .tag-etc-dropdown{
width:100%;
font-size:13px;
padding:4px 6px;
border-radius:6px;
}
▼機能のCSSコード
ショートコード
前回のショートコードに、「number=”30″」を追加される形になります。これは、タグを30コ表示します。無制限に表示したい場合は、number=”0″ と入れてください。
「0e2e3d」の部分には、希望の色のHEXカラーコードを入れてください。
これを記事で表示したいところや、ウィジェットに入れてください。
[custom_tag_cloud_boxed_color number="0" color="#0e2e3d"]
ショートコード
完成
▼ をクリックするとこのように表示されます。

ポイント
ポイントとしてマトメると以下のようになります。
- 置き換え版 PHP コード、マーカー「▼」用追加CSSコード、「number= 」が入ったコードをペーストする
- 9位以下を見たい場合は、「▼ 」をクリックする
- 「▼」をクリックすると「レ」が現れます
- 更に、それをクリックすると、他のタグが表示されます
- 目当てのタグをクリックします
以上でタグに関連する記事が表示されます。
まとめ
「▼」を使用することは、以下の3つの利点があります。
- 9位をに「▼ 」を表示することで、それ以下のタブの存在を予想させる効果
- 「etc」や「その他」で表示するよりシンプルなデザインになる
- 「▼」だけクリックで開くだけなので 、誤クリック防止になる
今回は、ヒートマップ風タグクラウドに「▼」を使用することは、情報可視化+ 探索 に非常に有効と思い実装しました。
使いやすさを実感してみてください。
次の記事
前回の記事









コメント