WordPressのタグクラウドの表示がおかしい

 WordPress に限った話ではありませんが、WordPress はセキュリティを高めたりユーザービリティを高めるために頻繁にアップデートを行います。安全にブログを運用するためには必ず最新版を使うこと、という教えを守って更新ボタンをぽちっとするのは良いことなのですが、これにより今までちゃんと表示されていたものがおかしくなるというのはよくあることです。

こちらは先日までちゃんと表示されていたサイドバーのタグクラウドなのですが、

20151213_1

WordPress のバージョンを 4.4 にしたところ、こうなりました。

20151213_2

問題の切り分け

 WordPress が吐き出す HTML ソースを確認すると、サイドバーのウィジェットであれば出力される ASIDE タグや H2 のタイトルタグが出力されずにタグクラウド本体が出力されてしまっています。最初は WordPress の不具合なのかなと疑っていたのですが、テーマを Twenty Fifteen に変更して試したところ、問題なく出力されているので原因がテーマであることがわかりました。

本来なら出力される HTML ソースが出力されないので、CSS で指定したスタイルが適用されない事態になっている訳です。

原因

 こちらのリンク先を参考にしました。リンク先を読んじゃったら当ブログの説明はいらないかもしれない。てへぺろ☆

WordPress 4.4とタグクラウド | afainu.action.mark2

 気にせず進めますが、原因は function.php に記述したタグクラウドをカスタマイズするフィルターフックです。タグクラウドの大きさや表示件数をカスタマイズしたい場合、function.php に次のようなフィルターフックを記述していると思います。

ネットで調べると、よく見かける指定方法です。当ブログの場合、次のように指定していました。

 タグクラウドは、よく使われるタグは文字を大きく表示し、あまり使われていないタグは文字を小さく表示するのが一般的です。私はこのデコボコ感があまり好きではないので、使用頻度にかかわらず大きさを一定にする設定にしています。

 ちなみに、widget_tag_cloud_args でフィルターフックしてタグをカスタマイズできるパラメータの一覧はこちらから確認することができます。

テンプレートタグ/wp tag cloud – WordPress Codex 日本語版

対策

 先ほど紹介したリンク先で詳しく述べられてますが、連想配列 $myargs を直接 return してしまうと、WordPress コアの wp-includes/widgets/class-wp-widget-tag-cloud.php 内で wp_tag_cloud 関数の引数をすべて上書きしてしまうので、wp_tag_cloud 関数の echo パラメータが初期値の true になってしまい、ASIDE や H2 でラッパーされる前に出力されてしまうのだそうです。

これを防ぐには次のように記述します。

 まずはカスタマイズしたいパラメータの連想配列を作り、その配列と元の配列をマージして、マージしたものをリターンしてあげればちゃんと表示されるようになるはずです。そして、これがちゃんとした指定方法のようです。

ちなみに、このように記述しても一応動作はします。

ただし、後々別の問題を引き起こす可能性もあるので、ちゃんとマージした配列をリターンしたほうが良いのではないかと思います。

「役に立った」と思ったら、記事のシェアをお願いします。

スポンサーリンク

Comment

コメント認証制です。反映されるまで時間が掛かる場合があります。
URLの記入はhttpのhを抜いて下さい(宣伝対策です)。
連続でコメントするとスパム扱いになる場合があります。
しばらく待ってからコメントしてください。

CAPTCHA


TOP