PS Auto Sitemapで作成したサイトマップを「昇順」でかつ、手動でも並べ替えられるように設定する

 草野真一さんが主宰するほんやくネットのプロジェクト「今昔物語集 現代語訳」に参加している。このプロジェクトは名前のとおり、日本の古典の名作『今昔物語集』を現代語訳にして、誰しもが楽しめる形で提供することを目指している、めちゃ偉大なプロジェクトだ。最近では、英語訳にも手を出し、国際化を目指している。

 自分はというと、今のところ、現代日本語訳の仕事は1話のみしか担当できていないのだが、その代わりに、当初はてなブログで運営していたサイトをWordPressに移行する作業を担当したり、またサーバーをお貸ししたりと、裏方業務で貢献させていただいている。また、最近公開した以下の2記事、『今昔物語集』の英語での紹介文と、サンプルとしての英語訳の1話は、自分が担当した。腐っても外国語学部卒である。

"Konjaku Monogatari" is a collection of over 1000 stories written in Japan about a thousand years ago. "R
Konjaku Monogatari Volume 4 episode 24thOnce upon a time, there was a Buddhist philosopher, Nagarjuna, in India. He was

PS Auto Sitemapで目次づくり

 「今昔物語集 現代語訳」プロジェクトについては、おいおい別記事で書くとして、今回の記事では、その「今昔物語集 現代語訳」サイトでちょっと悩んでいたサイトマップの設定について。

 『今昔物語集』というのは、その名のとおり1000年前に成立した全31巻(8巻・18巻・21巻は欠けている)からなる物語集なので、それをWebサイト形式で公開するにしても、当然「目次」といったものはあったほうがいい。

 そのため、大定番のWordPressのサイトマップ作成プラグイン「PS Auto Sitemap」で「目次」という名のサイトマップを作成したのだが、いくつか不満点があった(代表より要望された)。具体的には、

  • カテゴリー順がめちゃくちゃ
  • 降順より昇順のほうがいい
  • 翻訳記事の公開日時での並び順だと都合が悪い

といったもの。

カテゴリー順がめちゃくちゃ

 1つ目のカテゴリー順がめちゃくちゃというのは、WordPressを使ったことのある人なら知っていると思うが、WordPressの基本設定ではカテゴリーの並び順を任意に変更することはできない。

 かのサイトの場合、カテゴリー自体が「巻一」「巻四」「巻五」と、巻数を表しているので、これがぐちゃぐちゃに並んでいると、だいぶかっこ悪かったのだ。

カテゴリーの並び順がめちゃくちゃでかっこ悪い様子。

画像の場合は、サイドバーのカテゴリー一覧での表示だが、サイトマップもこれと同じ順序だった。

 ただし、この問題に関してはプラグイン「Category Order and Taxonomy Terms Order」を入れることで、すぐに解決できた。

降順より昇順がいい

公開日時順どおりに並べられると都合が悪い

 どちらかというと、重要だったのはこの2つ。

 まず、「降順より昇順がいい」というのは、普通のブログ形式のサイトであれば、サイトマップは新着記事から順に、降順に並んでいく姿が自然であろうが、なんせ、かのサイトは物語集。

 新着記事から降順に、

  • 三話
  • 二話
  • 一話

と並んでいくよりも、数が若い順(昇順で)に

  • 一話
  • 二話
  • 三話

と並んでくれる方が自然な姿だ。

 また後者の、「記事の公開日時通りに並べられると都合が悪い」ということについては、つまり記事の公開日時が、必ずしもお話の順番どおりには進行していないということ。

 以下の画像の「巻五」の項目を見てもらうと分かるとおり、必ずしも翻訳記事の公開順序が、お話の順番通りには進行してしないのだ。

カテゴリー内での話の並び順が整合が取れていない様子。

「巻五」カテゴリーでの並び順が話の順番とまったく整合が取れていない。

 画像のサイトマップは降順で並べられているから、「巻五」の公開順序は、「第一話」「第一三話」「第十一話」……と、だいぶアバウトに進行していることになる(このようなことになっている理由は、翻訳を担当する訳者の進捗状況など諸々の事情があり)。

 よって、これらの問題を解消をするためには、サイトマップの並び順を昇順にしてかつ、公開日時どおりだとマッチしない箇所に関しては、手動で並べることにする。

Intuitive Custom Post Orderで並び替えた順序をサイトマップにも適応させる

 ここまでの説明にだいぶ文字数を費やしてしまったが、これらの問題点を解消する手順は、とても簡単だった。実際に行った手順としては、

  1. Intuitive Custom Post Orderで記事を並び替える
  2. PS Auto SitemapのPHPを弄り、手動で並び替えた順序に従うように設定する

といったもの。

Intuitive Custom Post Orderで記事を並び替える

 まずは、記事の順序をマウスで簡単にいじれるプラグイン「Intuitive Custom Post Order」をインストールし、有効化する。具体的なプラグインのインストール・有効化手順に関しては、ありとあらゆるサイトでわかりやすく解説されているので、ここでは割愛。

 有効化をしたら、WordPress管理画面の「設定」→「並び替え設定」で並び替えを適応させる項目にチェックを入れる。

全てにチェックをした様子。

 「投稿」にチェックは当然として、カテゴリーにもチェックをしておくと、カテゴリーも並び替えられるようになる(つまり「Category Order and Taxonomy Terms Order」は不要になる)。

 設定が完了したら、「投稿一覧」ページにいく。今回のサイトの場合、全記事規模ではなく、あくまでカテゴリー内で整合が取れていればいいので、カテゴリー別で絞り込む。

巻五カテゴリーで絞って表示した様子。

 さきほど例にあげた「巻五」の場合、記事の公開順だと、

  1. 第一話
  2. 第十三話
  3. 第十一話
  4. 第二話
  5. 第十二話
  6. 第三話

という、かなりめちゃくちゃな順番になってしまっているため、これをマウスで本来の話の順に並び替える(ここではあくまで降順のまま)。マウスでカチカチ並び替えるだけでいいので、とても簡単だ。

変更前のバラバラな並び順。

変更前

Intuitive Custom Post Orderで並び替えた後。

変更後

PS Auto Sitemapの並び順を「Intuitive Custom Post Order」での設定に従うようにする

 上記の「Intuitive Custom Post Order」での記事の並び替えによって、カテゴリー別表示などした際には、整合がとれた表示になった。しかし、これだけだと、PS Auto Sitemapで作成したサイトマップの方には適用されていない。

カテゴリー別表示での様子。

トップページでの記事一覧や、カテゴリー別表示では、綺麗に並び替わっている。

 そのため、PS Auto Sitemapのコードを少し弄り、上記の並び替えに従うように設定する。

 管理画面の「プラグイン」→「プラグイン編集」と進み、「PS Auto Sitemap」を選択し、ps_auto_sitemap.phpを編集する。

プラグイン編集画面で「PS Auto Sitemap」と入力

 エディタ画面を適当にクリックした上で、Macならcommand + F、WindowsならCtrl + Fを入力するとファイル内検索ができるので、「ORDER BY」と入力する。

ORDER BYと入力し、項目を探す。

ORDER BY `posts`.`post_date` DESC”;

という一行が示されるので、それを

ORDER BY `posts`.`menu_order` DESC”;

と書き換える。post_dateをmenu_orderだけに書き換えるだけでよい。

コードを書き換えた後。

 書き換えたら「ファイルを更新」を押し、サイトマップを確認してみる。「Intuitive Custom Post Order」で並び替えたどおりでかつ、昇順に並んでいると思う。

完成した様子。

手動で設定した整合がとれた順序かつ、昇順に並び替わった。

万が一、降順のままであれば、

ORDER BY `posts`.`menu_order` DESC”;

ORDER BY `posts`.`menu_order` ASC”;

に書き換えて、試してみて欲しい(DESCなのに昇順に切り替わっている理屈は、自分でもよくわからず)。

番外編:タイトル順は漢数字にはうまく機能せず

 ちなみに、上記のサイトマップの並び順の設定コードの書き方には他にもいくつかあり、もっと便利そうなのだと「タイトル順」というのがある。これがうまく機能してくれれば、わざわざ手作業で並び替えたりしなくてもよさそうだ。

 設定には、上記のコードの箇所を、

ORDER BY `posts`.`post_title` ASC”;

と書き換えると設定できるのだが(ASCもしくはDESCは、降順 or 昇順の好みにで)、残念ながら今回の場合は、うまく機能しなかった。

タイトル順での並び順に設定。

 やはり、タイトル順といっても、所詮英数字で表現できる欧文の世界。今回のような漢数字表示だと、うまく順番どおりに並んでくれないのである。もちろん、漢数字表記をやめて、5 – 1, 5 – 2と、数字のみの表記にすればうまく並んでくれるだろうが、それじゃあ本末転倒だしね。

終わりに

 今回のようなケースはそう多々ないだろうが、うちの「今昔物語集 現代語訳」サイトのように、小説などを書いているサイトの場合、けっこうこういったニーズがあるのではと思い、記事にしてみた。参考にしてくれれば幸いだ。

 ちなみに、「今昔物語集 現代語訳」プロジェクトは参加者を絶賛募集中です。僕に連絡していただければ、代表の草野さんにもつなげるので、どうぞご気軽に連絡ください。

参考ページ一覧