今年も残り2か月と少し。茨木広告宣伝舎が運用している通販で、ネットショップに掲載する三段重おせちの画像を準備していて気づきました。
「一の重」「二の重」「三の重」の画像をフォルダ内でファイル名で並べ替えると、順番通りに並ばないのです。
漢字の「一」「二」「三」は、コンピューターの文字コードでは「一」「三」「二」の順なのです。
コンピューターの世界では、日本語(厳密にいうと2バイト文字の表意文字)というのは厄介なのものです。
通常のソートでは、文字コード順にソートされるからです。漢字が交じると50音順や、漢数字順のソートはできません。ひらがなもしくはカタカナだけであれば問題ないのですが、現実的にはありえない状況です。
しかし50音順に表示したい場面は、文字コード順に表示するよりもはるかに多くあります。というより漢字交じりの場合に文字コード順に表示する需要はありません。
先日はWordPress案件でカテゴリーごとに記事をタイトルの50音順に表示するという課題がありました。
WordPressでは「List Category Posts」というプラグインでカテゴリーやタグごとに記事を表示することはできます。しかもタイトル順に表示するパラメーター(orderby=title)もあります。
しかし、パラメーターでタイトル順に表示させると文字コード順になってしまいます。
じつはこの課題ははじめてではありませんでした。カスタムフィールドで「ふりがな」を入力すれば、これを使って50音順の並べ替えができるのです。
そしてこれまでは、カスタムフィールドの並べ替えでカテゴリー一覧を表示するコードを書いていました。
「List Category Posts」ではカスタムフィールドで並べ替えができないと思い込んでいたからです。
今回改めてプラグインのドキュメントを確認したところ、カスタムフィールドでもソートができることがわかりました。
https://github.com/picandocodigo/List-Category-Posts
https://github.com/picandocodigo/List-Category-Posts/wiki/More-parameters-you-can-use
customfield_orderbyというパラメーターを使えばよいのです。たとえばこのような具合です。
[catlist numberposts=5 customfield_orderby=furigana order=asc]
じつにあっけなく解決しました。
「List Category Posts」の機能は多岐にわたります。いちどドキュメントの全体を軽くさらっておいたほうが良さそうです。
土曜日の茨木の天気(2018年10月26日)
朝は冷えましたが晴れました。気温も上がって20℃を超えました。
一昨日の茨木の天気(2018年10月27日)
一日を通して穏やかに晴れました。気温も上がって20℃を超えました。日中は半袖でも過ごせそうでした。
昨日の茨木の天気(2018年10月28日)
朝方は曇っていて9時頃に少し時雨れました。その後は晴れて気温も20℃を超えて上がりました。
今日の茨木市の天気(2018年10月29日)
朝から一日晴れましたが、朝も冷え込み、日中も気温が上がりませんでした。長袖1枚では寒く感じました。
私も同じ経験をしました。カスタムフィールドに読み仮名を入れて、phpを書くのか、面倒だなと思っていたらこの記事にたどり着きました。