icon
Let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【WordPress】固定ページにタグ一覧をショートコード表示&パラメータでサイズ・表示数・記事件数を渡す方法(wp_tag_cloud)

更新: 2024/05/05 2544文字

今回は、WordPress搭載のタグクラウド出力ファンクション『wp_tag_cloud』を使用して、固定ページに投稿タグ一覧のページを作ってみます。また、ショートコード使用時にパラメータを渡して、文字サイズ調整・表示数・記事件数表示というのも行ってみました。早速内容を確認していきましょう。

今回使うWPファンクション、wp_tag_cloudとは?

その名の通り、タグクラウドを出力するファンクションです。ウィジェットでタグクラウドを使わないで、任意の場所に出力したいときはこちらを使うと思います。基本的には、wp_tag_cloud();とだけ書けば、デフォルト設定のタグクラウドが出ます。

そのほか、渡せるパラメータもいくつかあって、表示をカスタマイズすることが可能です。よく使いそうなのは以下のものでしょうか。

smallest 最小の文字サイズ
largest 最大の文字サイズ
number 表示するタグの数(デフォルト45)
separator タグとタグの間のセパレータ
exclude 除外したいタグのterm_id
show_count 件数表示するか

固定ページにタグ一覧をショートコード表示&パラメータで調整する方法

投稿・固定ページ

まずはタグクラウドを表示したい固定ページを準備します。説明文をcontentに書いて、ショートコードも入れておきます。ショートコード名はtaglist、固定ページスラッグもtaglistとしました。このスラッグはあとで使います。

テーマテンプレート・page.php

page.phpでは、記事が入るボックスのclassに『$post->post_name』を追加しました。これでスラッグ名がclassで出て、CSSを当てるのがラクになります。

テーマCSS

上で当てた固定ページ専用のclassにCSSをつけます。タグクラウドのフォーマットパラメータは指定していないので、aタグで出てきます。通常のaタグよりマージンを取りたい、みたいなこともあるかもしれません。

taglistのボックスには『padding:2rem 0;border-bottom: 1px dotted #ccc;』、taglist aには『display: inline-block;margin-bottom: 20px;』をあてました。下のマージンが少し追加されて見やすくなります。出力をリストにしている場合は『ul li』のように指定方法を変えましょう。

テーマfunctions.php

functions.phpにショートコードを登録します。wp_tag_cloudパラメータは『最小文字サイズ10,最大文字サイズ32,タグ全件表示,件数表示true,セパレータが全角スペース』となります。

function taglist_shortcode() {
 ob_start();
  wp_tag_cloud('smallest=10 & largest=32 & number=0 & show_count=true & separator= ');
 return ob_get_clean();
}
add_shortcode('taglist', 'taglist_shortcode');

また、ob_startとob_get_cleanで挟んでありますが、これはPHPの出力バッファ用ファンクションです。『ショートコードのほうが先に処理されて、本文より前に出てしまう』のを避けるため、一時的にバッファして遅らせてます。ob_get_cleanで出力バッファの内容を取得してバッファ終了します。

なお、バッファ終了させたいからといって、名前が似ているファンクション『ob_end_clean』を使ってしまうと、中身が空のタグクラウドが戻ってきます

表示例

では早速、タグクラウド表示を確認してみます。 こんな感じで、文字数によるサイズ&件数&セパレータ付、登録されているタグ全件のタグクラウドができました。

実際の表示は、このサイトの以下のページにつけていますので、こちらもご確認ください。

あとがき・まとめ

  • WordPressにはwp_tag_cloudというファンクションがあり、パラメータで表示を調整できる
  • テンプレートのウィジェットにしない場合は、ショートコードで出力しても良い
  • ショートコードが先に処理されて困る場合は、PHPのバッファリングを使う

まとめると、こんなところでしょうか。ウィジェットを使ってテンプレートに常に表示だと重くなるけど、タグ専用のページができてよかったです。


【カテゴリ】- WordPressファンクションetc
【タグ】- ,

関連記事