PR

WordPress フィルターフックでタグクラウドを整列

運用保守

Codex を読んでもなかなかピンと来なかったり、Forum に参加しても目的の答えが見つからなかったり - 開発運用の専門家で無いブログ担当者(WordPress ブログをカスタマイズする人)にとって、カスタマイズの悩みの種は尽きません。小さなことの積み重ねですが、お客様のページをカスタマイズした際の備忘録として記事を書いています。

WordPress でいうフックとは、ユーザーの所望する動作や設定を WordPress 本体(コア・プログラム)に引っ張り込むための「きっかけ」のことです。フックは、もともと「引っ掛ける」という意味です。技術屋さんたち????はトリガーと呼んでいます。

様々なきっかけ、例えば、ある関数が呼び出された、または、記事が表示されたときなどに、特定の動作や設定を行うこと(自分の用意したプログラム(????はコードと呼びます)を実行すること)をフィルターフックといいます。今のところ、アクションフックも同じようなものと思ってください。詳しくは、WordPress API を参照してください。

フィルターフックを使うためには、通常、functions.php 内やそこから呼び出すファイル内に add_filter() という関数を記述します。その際、ftp で直接アクセスしてコア・プログラム自身を変更してしまうのは止めておきましょう。

add_filter( ①対象フィルターの名前, ②フック時に実行する独自の関数名, [省略] );

add_filter( ①対象フィルターの名前, ②フック時に実行する独自の関数名, [省略] );

タグクラウドのパラメータを変更したい場合は、例えばこんな感じです。set_tagcloud11 は、パラメータ変更のための任意の関数名です。既存のプログラムやモジュールとの関数名の衝突に気をつけて、少し変わった名前にするのがコツです。弊社では、関数名の末尾に管理番号をつけています。

widget_tag_cloud_args は、対象とするフィルターの名前です。wp_tag_cloud() という関数に作用します。

add_filter( ‘widget_tag_cloud_args’, ‘set_tagcloud11’ );

add_filter( ‘widget_tag_cloud_args’, ‘set_tagcloud11’ );

参考:上記と合わせて、分かりやすいように②の関数の定義も functions.php 内に一緒に書いています。

// タグクラウドのパラメータ変更
function set_tagcloud11($args) {
  $myargs = array(
    'smallest' => 100,  // 最小文字サイズ
    'largest' => 150,   // 最大文字サイズ
    'unit' => '%',      // 文字サイズの単位
    'number' => 30,     // 表示数
    'order' => 'DESC',  // 降順に表示
    'exclude' => '1183, 1194, 1216', // 除外するタグ
    'orderby' => 'count',   // 記事を多く書いている順に表示
    'echo' => false     // WordPress 4.4 以降は必要
  );
  return $myargs;
}
add_filter( 'widget_tag_cloud_args', 'set_tagcloud11' );

このようなやり方により、WordPress のデフォルト(元々の)表示と違う独自の表示にカスタマイズできます。また、WordPress 本体のプログラムを触る危険を冒す必要がありません。非常に便利な機能なので、この構文を頭に入れておいてくださいね。

参考URL:

  • 対象フィルターの一覧
  • wp_tag_cloud()