WordPress4.4にバージョンアップ後に、「タグクラウドの表示がおかしくなった!」「ただのリンクみたいになっている!」という不具合が出ているようです(私のブログでもありました)。タグクラウドの文字サイズを揃えている人はおそらくこの不具合を見ていると思いますが、簡単な解決方法があったのでこの記事でシェアしたいと思います。

sponsored link

WordPress4.4でのタグクラウドの不具合について

WordPressにあるタグクラウドのウィジェットですが、デフォルトではタグに含まれる記事の数に応じてタグ名のフォントサイズが変化するようになっていますよね。(この記事のサイドバーにあるタグクラウドみたいな感じ)

記事数が多ければ多いほど、タグ名のフォントが大きくなるので、そのブログがどんな情報をたくさん書いているのかが視覚的に分かっていいのですが、色々な理由からフォントサイズを揃えてる設定をしている方も多いと思います。

私ももう一つのブログのほうでは、文字を揃える設定をしています。デザインがそのほうがパシッと決まる感じがするのと、記事数の少ないタグも見過ごされなくて済むかなと。(記事数が少ないからと言って価値が低いわけじゃないですからね)

具体的には、function.phpに以下のフィルターを追加すれば文字の大きさが同じになります。

 

WP4.3では問題なかったのが、4.4にアップデートした後から表示がおかしい。

タグクラウド WP4.4での不具合まずウィジェットタイトルが表示されないし、タグクラウドに適用されていたCSSが効かなくなっていてあたかもリンクの羅列のようになってました。キャッシュが変に残っちゃったのかとか、色々考えたものの、キャッシュをクリアしてもダメだし、CSSも特に変更した覚えはありません。

ソースを見てみてみたら、ウィジェットタイトルも出力されていないし、普通ならウィジェットを囲うはずのdivタグもない。ということは、CSSじゃなくてコードの出力の時点で問題が起きているということですね。

それにしても・・・かなり残念な表示です(笑)

 

文字サイズを揃えるフィルターで不具合が起きていた

調べてみたところ、タグクラウドの文字サイズを制御する(そろえる)ために使っている上のフィルターがWordpress4.4で不具合を起こしてしまうようでした。フィルターをコメントアウトして次回のバージョンアップを待つという手もありますが、解決策を提案してくださっている方がいて、おかげでちゃんと表示できるようになりました!

参考:[resolved] WordPress 4.4 update broke Tag Cloud

 

具体的には、以下のように変更します。

 

この解決策を考えてくれた人の解説によれば、

Until WP 4.3.x, wp_tag_cloud function was used to directly output (‘echo’ => true), which is the function’s default behavior. In WP 4.4, however, the function is used to set the tag cloud into a variable as a string, without output (‘echo’ => false).

The original description of the custom function overrides the default arguments, where ‘echo’ is set to false. So tag cloud was output at wrong timing (before output of wrapper and title). To resolve it, arguments should not be override, instead, custom arguments should be merged with default arguments.

引用元: [resolved] WordPress 4.4 update broke Tag Cloud

 

私が適当に訳した感じだと、

 

WordPress4.3.xバージョンまでは、wp_tag_cloud関数は直接出力されるのがデフォルトの動作だった(’echo’ => true)が、4.4バージョンではこの関数はタグクラウドを文字列として変数にセットするようになった、つまり直接出力ではなくなった(’echo’ => false)。

このような変更が加えられたところに、以前のフィルター(カスタム関数)を使うとどうなるか。

フィルターがデフォルトの引数を上書きしてしまい、これが原因でウィジェットタイトルやウィジェットのラッパーの出力の前にタグクラウドが出力されてしまう。

これを解決するためには、引数が上書きされずに、カスタム引数をデフォルトの引数にマージ(結合)されるようにする必要がある。

 

訳すとかえって分かりにくいですね。。スミマセン。ようは

$args = wp_parse_args( $args, $my_args );

の一行を加えることで、フィルター内で定義した引数ともとの引数を結合させ、その結合させた引数を返すことで、問題が解決されたようです。

私のブログのタグクラウドもちゃんと表示が戻りました!

tagcloud-wordpress4.4-fixed

WordPressの次期バージョンでどうなるかわかりませんが、4.4でタグクラウドが変になった!!とお困りの方は、一度function.phpでこんなフィルターを使っていないかどうかチェックしてみてください。