Category Order and Taxonomy Terms Orderを使った際、get_tags()の並び順(orderby)がidから変更できなくなったので対応方法をメモしておきます。
サンプルコード
get_tags()でタグの一覧を表示させてみます。
PHP
<?php $tags = get_tags(); if( $tags ): ?> <ul> <?php foreach( $tags as $tag ): ?> <li> ID:<?php echo esc_attr( $tag->term_id ); ?> 名前:<?php echo esc_html( $tag->name ); ?> </li> <?php endforeach; ?> </ul> <?php endif; ?>
以下のようなタグを登録して、表示を確認してみます。
- 名前:black
ID:8 - 名前:blue
ID:10 - 名前:green
ID:6 - 名前:orange
ID:11 - 名前:red
ID:12 - 名前:white
ID:7 - 名前:yellow
ID:9
引数を特に設定していないので、タグの名前順で表示されました。
コードはそのままで、Category Order and Taxonomy Terms Orderをインストールして有効化してみます。
並び順がタグの名前順からID順に変わりました。
引数にorderby=nameを指定して、名前順になるようにしてみます。
PHP
<?php $tags = get_tags('orderby=name'); if( $tags ): ?> <ul> <?php foreach( $tags as $tag ): ?> <li> ID:<?php echo esc_attr( $tag->term_id ); ?> 名前:<?php echo esc_html( $tag->name ); ?> </li> <?php endforeach; ?> </ul> <?php endif; ?>
引数を設定しても反映されず、ID順のままでした。
対応方法
設定 > Taxonomy Terms Order 内の「自動ソート」を無効にして、get_tags()を引数なしに戻します。
PHP
<?php $tags = get_tags(); if( $tags ): ?> <ul> <?php foreach( $tags as $tag ): ?> <li> ID:<?php echo esc_attr( $tag->term_id ); ?> 名前:<?php echo esc_html( $tag->name ); ?> </li> <?php endforeach; ?> </ul> <?php endif; ?>
これでタグが名前順で表示されるようになりました。
「自動ソート」はプラグインで指定した順番で自動出力するかどうかを指定するもので、無効にした場合はコード上で指定する必要があります。
引数にorderby=term_orderを指定すればOKです。
PHP
<?php $categories = get_categories('orderby=term_order'); if( $categories ): ?> <ul> <?php foreach( $categories as $category ): ?> <li> ID:<?php echo esc_attr( $category->term_id ); ?> 名前:<?php echo esc_html( $category->name ); ?> </li> <?php endforeach; ?> </ul> <?php endif; ?>
これでカテゴリーは指定した順番で並んで、タグは名前順で表示されるようになりました。
コメントが承認されるまで時間がかかります。