2008年7月1日
WordPress 2.5以降をお使いの方は、こちらのバージョンをご利用ください。
WordPressには、標準ではカテゴリーを並べ替える機能がありません。
カテゴリーの管理や並べ替えを行える「Category Manager」というプラグインもあるそうですが、環境によっては動作しないといったこともあるそうです。
当サイトでは、Movable Type用のカテゴリーの並べ替えプラグインをご提供していますが、それと同じような仕組みで、WordPressで動作するものを作ってみました。
カテゴリー名の先頭に連番を振って、カテゴリー名を表示する時点でその連番をカットするものです。
1.インストール
カテゴリーの並べ替えプラグイン for WordPressは、以下のアドレスからダウンロードすることができます。
プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。
また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。
ダウンロードしたファイルを解凍すると、「cutfirstchar.php」というファイルができます。
このファイルをメモ帳等で開くと、11行目に以下のような行があります。
define('CFC_LENGTH', 6);
この行の「6」が、カテゴリー名の先頭から切り取る文字数を表します。
後でカテゴリーに連番を振りますが、その桁数に合わせて、この「6」を書き換えます。
例えば、連番を3桁で振るなら、この行を以下のように書き換えます。
define('CFC_LENGTH', 3);
ファイルの書き換えが終わったら、WordPressの「wp-content」→「plugins」ディレクトリに、cutfirstchar.phpファイルをアップロードします。
そして、WordPressにログインして、プラグインのページで、このプラグインを有効化します。
なお、前述したCategory Managerプラグインを有効にしていると、カテゴリーの一覧表示が正しく行われなくなりました。
Category Managerプラグインは無効にしておいてください。
2.カテゴリーに連番を振る
次に、カテゴリー名の先頭に半角数字で連番を振って、カテゴリーを並べる順序を決めます。
例えば、「東京」「大阪」「名古屋」というカテゴリーを作り、この順序で並べたいとします。
この場合だと、「010東京」「020大阪」「030名古屋」のように、カテゴリー名の先頭に連番を振ります。
その際、連番の桁数は統一しておく必要があります。
上のように3桁で連番を降る場合、100の位が0であれば、「010」のように連番を振ります。
カテゴリーを階層化する場合は、それぞれの階層で連番を振るようにします。
例えば、以下のようにカテゴリーを階層化したいとします。
- 東京
- 新宿
- 渋谷
- 池袋
- 大阪
- 梅田
- 難波
- 天王寺
この場合、1階層目の「東京」「大阪」と、2階層目の「新宿」等のそれぞれに連番を振り、以下のようにすると良いでしょう。
- 010000東京
- 010010新宿
- 010020渋谷
- 010030池袋
- 020000大阪
- 020010梅田
- 020020難波
- 020030天王寺
3.テーマの書き換え
次に、テーマの各ファイルの中で、以下のようにテンプレートタグを書き換えます。
| 書き換え前のテンプレートタグ | 書き換え後のテンプレートタグ |
|---|---|
| the_category | the_category_cfc |
| single_cat_title | single_cat_title_cfc |
| wp_title | wp_title_cfc |
| wp_list_categories | wp_list_categories_cfc |
| wp_dropdown_categories | wp_dropdown_categories_cfc |
タグの名前を変えるだけで、それ以外の部分は変更しません。
例えば、テーマのファイルの中に、以下のようなthe_categoryタグがあるとします。
<?php the_category(', ') ?>
この場合だと、以下のように書き換えます。
<?php the_category_cfc(', ') ?>
なお、上記以外のカテゴリー関連のタグでは、現状ではカテゴリー名の連番を切り取る処理は行っていません(例:list_catsタグやdropdown_catsタグ)。
WordPressのソースコードを見ると、list_catsタグやdropdown_catsの処理は「deprecated.php」というファイルの中にあり、これらのタグは廃止が予定されているものと思われます。
4.表示の確認
ここまでで、このプラグインの導入作業は終わりです。
Blogの各ページを表示してみて、カテゴリーが正しく表示されていることを確認します。


コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
早速試させていただきましたが、どうも、「wp_list_cats」というタグを書き換える場合はうまくいきませんね。どうしてでしょう?
>sayuさん
こんにちは。
プラグインご利用ありがとうございます。
wp_list_catsタグには対応していません(このタグの処理もdeprecated.phpにあったので)。
wp_list_categories_cfcタグをお使いください。
こちらのプラグインをお借りしました。
ありがとうございました。
並び替えがうまくいったのですが、
サイドのメニュータイトル「Categories」のすぐ下に
「カテゴリー」というメニューが出て、
それから自分で作ったカテゴリーが表示されているので、
この「カテゴリー」部分を消したいのですが、
できるんでしょうか?
テーマ(小粋空間より)を使っていて、
<?php wp_list_cats('sort_column=name&optioncount=1&hide_empty=0'); ?>
を、
<?php wp_list_categories_cfc('sort_column=name&optioncount=1&hide_empty=0'); ?>
に変えました。
(質問するサイトを間違えていたら、ご指摘ください。)
よろしくお願いします。
>もみぃさん
こんにちは。プラグインご利用ありがとうございます。
ご質問の件ですが、以下のようにすればできると思います。
<?php wp_list_categories_cfc('title_li=&sort_column=name&optioncount=1&hide_empty=0'); ?>
さっそくのお返事ありがとうございました。
。
思い通りの表示ができて、うれしいです。
本当にありがとうございました
はじめまして。並べ替えプラグインを利用しているペーターと申します。とても便利で感動です!
1つバグなのかわかりませんが、気付いたことがあるので報告します。
1ページ内に1カテゴリの記事が複数ある場合に、2回目以降のカテゴリ名の表示がさらに設定バイト数削られてしまいます。
例:1ページに3件同じカテゴリの記事があった場合
カテゴリ名「123456あいうえお」
文字コード「UTF-8」
1件目:あいうえお
2件目:うえお
3件目:お
という感じです。
これはバグでしょうか?それとも私の設定ミスでしょうか?
お時間のある時にお願いします。
それでは失礼いたします。
>ペーターさん
こんにちは。
不具合をご指摘いただき、ありがとうございました。
修正したものをアップロードしましたので、差し替えてお使いください。
http://www.h-fj.com/wp_plugin/CutFirstChar_1_01.zip