WordPressのタグクラウドをたった1行で自作・改造する色々

自分向けに超絶便利に使ってるタグクラウドですが
読者の皆さまにおかれましてはクマムシタグくらいしか押されてないので
フッタに移動させることにした備忘メモ。

自作タグクラウド

テンプレートタグ wp_tag_cloud() でタグクラウドを自作する

WordPress2.3以上で導入された wp_tag_cloud() を使えば
たった一行で簡単に設置できます。

【function.php】
<?php wp_tag_cloud(); ?>

カスタマイズするには中身を覗いてみます。

WordPress2.8 wp_tag_cloud() 初期値

日本語版Codexには書かれてませんが引数に separator が追加されてますね。

【PHP】
<?php $args = array(
'smallest' => 8,
'largest' => 22,
'unit' => 'pt',
'number' => 45,
'format' => 'flat',
'separator' => '\n',
'orderby' => 'name',
'order' => 'ASC',
'exclude' => '',
'include' => '',
'link' => 'view',
'taxonomy' => 'post_tag',
'echo' => true
); ?>

ちなみに wp_tag_cloud は実装が楽ちんな反面、引数が print_r では覗けません。
(調べようとして結構はまりました…。(^^;)
後述の format=array で出来そうな気がしますが、既に成形された状態で入ってます。
詳細は WordPress本体の category-template.php を参照してください。

タグクラウドカスタマイズあれこれ

タグ記事の件数に応じてフォントサイズを変更する

【PHP】
<?php wp_tag_cloud(' smallest=8 & largest=22 '); ?>

smallest で件数の少ない項目を、
largest で件数の多い項目を変更できます。単位はpt。

単位についてはCSSで使う pt, px, em, % が利用可能です。

【PHP】
<?php wp_tag_cloud(' smallest=8 & largest=22 & unit=px '); ?>

表示タグ数を変更する

【PHP】
<?php wp_tag_cloud('number=20'); ?>

デフォルトだと45件ですが、もっとスッキリさせることも可能。
全部出したいときは 0 にします。

タグ項目のソート方法

名前順と記事数が選べます。

タグの名前で切り替える場合

【PHP】
<?php wp_tag_cloud('orderby=name'); ?>

タグのついた記事件数で切り替える場合

【PHP】
<?php wp_tag_cloud('orderby=count'); ?>

タグ項目の表示順序

昇順 ASC (数字から始まる)

【PHP】
<?php wp_tag_cloud('order=ASC'); ?>

降順 DESC (数字で終わる)

【PHP】
<?php wp_tag_cloud('order=DESC'); ?>

ランダム RAND

【PHP】
<?php wp_tag_cloud('order=RAND'); ?>

特定タグだけ扱う

term_id で特定タグだけ除外したり、それだけ扱ったり出来ます。
term_idを見るには出力されたHTMLソースのクラスを見るか
ダッシュボードのタグ画面でマウスオーバーするとタクソノミーIDが何となく見えます。

割と大事な項目なのに、確認方法が地味すぎないかと小一時間…。

タグID 1番を除外

【PHP】
<?php wp_tag_cloud('exclude=1'); ?>

タグID 1番だけ表示したいとき

【PHP】
<?php wp_tag_cloud('include=1'); ?>

タグを成形したいとき

空白区切り

【PHP】
<?php wp_tag_cloud('format=flat'); ?>

リスト形式で扱いたいとき

【PHP】
<?php wp_tag_cloud('format=list'); ?>

PHPで配列として再利用したいとき

【PHP】
<?php wp_tag_cloud('format=array'); ?>

wp_tag_cloud() を使ったタグクラウドのカスタマイズまとめ

CSSと組み合わせて細かな調整ができそうですね。
とりあえず表示を切り替えたので追々手を入れたいと思います。

おまけ:ウィジェットの無効化

もし他にウィジェットを使ってないようなら、
機能丸ごと切っちゃえば(ほんの少しだけ)すっきりします。

【function.php】
// sidebar widget registration
register_sidebar( array(
'name' => 'Widget-1',
'id' => 'sidebar-1',
'description' => 'サイドバーウィジット',
'before_widget' => '<div id="%1$s" class="navi_box %2$s">',
'after_widget' => '</div>',
'before_title' => '<h4 class="paint_p">',
'after_title' => '</h4>',
) );