通常、ワードプレスプラグイン「Category Order and Taxonomy Terms Order」を使用することで、ウィジェットのカテゴリ順番を任意に並び替えることができますね。
私はワードプレステーマTHE THORを使用していますが、「Category Order and Taxonomy Terms Order」でカテゴリの順序を並べた場合でも、絞り込み検索のカテゴリ順がこの順番ではなくなってしまっていたのです。
これをなんとか任意の順番にできないかと模索しましたので、方法を残しておきたいと思います。
※function.phpで修正する方法はプラグインのプログラムをいじるのと同等のことをしていますので、最悪ワードプレスが動かなくなる可能性があります。こちらご了承の上自己責任でお願いいたします。
今回直したい内容
まず、ウィジェットのカテゴリ表示ですが、階層を表示することで、以下のように「Category Order and Taxonomy Terms Order」で指定した順番に並んでくれています。
しかし、絞り込み検索のカテゴリ表示は以下のようになっています。
これをウィジェットと同じ順番に並び変えたいなというのが今回やりたいことになります。
手動で修正
こちら、手動で直すことができます。
「Category Order and Taxonomy Terms Order」の並び順はカテゴリ階層ごとの1からの連番になっています。
これが、並び順にしか関係ないとすると、1からの連番である必要がなく、小さいものから大きいもの順番に並んでいることが重要かと思います。
やり方は、ダッシュボードのカテゴリ編集画面で、「並び順」の編集を行っていくことです。
そこで、以下のようにします。
親カテゴリである、「プログラミング」「ソフトウェア・ツール」「Mac」などは100ごとに数字を付けていきます。
子カテゴリには、(親カテゴリの数字+子カテゴリの中での表示順)という風にします。
結果、以下のように順番がきれいになりました。
リスクは少ないですが、全体の並び替えをしたいときにすべての並び順を手動で直して保存しなくてはいけないので、かなり面倒です。
また、プラグインやTHE THORの並べ替え機能を使用すると、元の順番に戻ってしまいます。
function.phpで修正
自動化したい場合はfunction.phpを使用します。
保存時のwp_ajax_update-taxonomy-orderというフックを使用して、自分の更新処理で上書きします。
function my_to_save_ajax_order() {
// 保存するための処理
}
// 更新アクションをオーバーライド
add_action( 'wp_ajax_update-taxonomy-order', 'my_to_save_ajax_order' );
remove_action( 'wp_ajax_update-taxonomy-order', 'TOsaveAjaxOrder' );
こちらの方法はリスクが高いので、頻繁に更新がない場合は手動で修正するのが良いと思います。
最後に
細かいことかもしれませんが、順番が整っていないのを見つけてしまうと気になってしまいますよね。
こういうところが気になるかどうかって性格が出てしまうところなのでしょうか?
この記事が私と同じく気になってしまった方のお役に立てれば幸いです。