WordPress でタグをカスタマイズしたい時に使う widget_tag_cloud_args 関数 のデフォルト値が、WordPress 4.4 以降で少し変わったらしいのでメモ。
WordPress をアップデートしたらタグの表示がおかしくなって、次のアップデートで勝手に直るかなと思って期待して放置していましたが、4.4.2 になっても変化がなかったので重い腰を上げて調べてみました。
例えばタグを下記のように表示したい場合は、これまでこんな感じに書いてました。
function custom_tag_cloud() { $args = array( 'smallest' => 100, 'largest' => 100, 'unit' => '%', 'number' => 50, 'format' => 'list', 'separator' => "\n", 'orderby' => 'count', 'order' => 'DESC' ); return $args; } add_filter( 'widget_tag_cloud_args', 'custom_tag_cloud' );
こうすると下記のような HTML が出力されるのであとは CSS で調整という具合です。
<aside id="tag_cloud-2" class="widget widget_tag_cloud"> <h3 class="widget-title">タグ</h3> <div class="tagcloud"> <ul class='wp-tag-cloud'> <li><a href='https://worklog.be/archives/tag/twentytwelve' class='tag-link-166' title='39件のトピック' style='font-size: 100%;'>TwentyTwelve</a></li> <li><a href='https://worklog.be/archives/tag/wp-memo' class='tag-link-190' title='27件のトピック' style='font-size: 100%;'>WP Memo</a></li> <li><a href='https://worklog.be/archives/tag/wp-plugin' class='tag-link-189' title='23件のトピック' style='font-size: 100%;'>WP Plugin</a></li> <li><a href='https://worklog.be/archives/tag/iphone' class='tag-link-88' title='20件のトピック' style='font-size: 100%;'>iPhone</a></li> <li><a href='https://worklog.be/archives/tag/perl-module' class='tag-link-177' title='16件のトピック' style='font-size: 100%;'>Perl module</a></li> . . . </ul> </div> </aside>
しかし、4.4 以降にアップデートするとこうなってしまいます。
タイトルが何故か消えて表示が崩れています。HTML はこんな具合です。
<ul class='wp-tag-cloud'> <li><a href='https://worklog.be/archives/tag/twentytwelve' class='tag-link-166' title='39件のトピック' style='font-size: 100%;'>TwentyTwelve</a></li> <li><a href='https://worklog.be/archives/tag/wp-memo' class='tag-link-190' title='27件のトピック' style='font-size: 100%;'>WP Memo</a></li> <li><a href='https://worklog.be/archives/tag/wp-plugin' class='tag-link-189' title='23件のトピック' style='font-size: 100%;'>WP Plugin</a></li> <li><a href='https://worklog.be/archives/tag/iphone' class='tag-link-88' title='20件のトピック' style='font-size: 100%;'>iPhone</a></li> <li><a href='https://worklog.be/archives/tag/perl-module' class='tag-link-177' title='16件のトピック' style='font-size: 100%;'>Perl module</a></li> . . . </ul>
何かシンプルに・・・
これは widget_tag_cloud_args を下記のように設定して上げると解決します。
function custom_tag_cloud( $args ) { $custom_args = array( 'smallest' => 100, 'largest' => 100, 'unit' => '%', 'number' => 50, 'format' => 'list', 'separator' => "\n", 'orderby' => 'count', 'order' => 'DESC' ); $args = wp_parse_args( $args, $custom_args ); return $args; } add_filter( 'widget_tag_cloud_args', 'custom_tag_cloud' );
フォーラムを調べてみたら関数のデフォルト値が変わったとか書いてあってそれが原因だった模様。なので、$args で受け取ったデフォルト値を wp_parse_args 関数を使って $custom_args で上書きして上げれば、今後は面倒な事はないって感じですかね。
ちなみに変わったのは echo パラメータで、4.3 までは false, 4.4 以降は true になった模様。なので単純に ‘echo’ => false を設定値に加えるだけでも元に戻る。