フロントエンド(サイト)のカテゴリの投稿一覧等のアーカイブ一覧のカスタマイズをする
Archive Posts Sort Customize
のバージョンアップをおこないました。
最新バージョンは1.5。
やったこと
今回は以下の2つの更新をおこないました。
・投稿のページ属性でのソート
・投稿のタイトルから指定したワードを無視してソートをするように(The ****とか A ***とか)
1つめの投稿のページ属性ソートですが、そもそも通常インストールしただけのWordPressの投稿には、ページ属性という項目(metabox)がありません。
WordPressコアのままでは固定ページのみ、Page Attributes の Order(順序) を変更する事ができるようになっています。
しかし、他のプラグインやテーマ等を用いて、投稿にもこの機能が使えるようにして、その変更した値の通りにソートをしたいという要望がありました。
なので、その機能を追加しました。
(簡単にできて良かった~ 😛 )
2つ目の追加した機能は、予想以上に難しかったです。。
「投稿タイトルに The とか A とかがついている場合があるんだけど、その部分を無視してソートして欲しい」
という要望でした。要するに、こんな感じです。
- The Books
- Movies
- A Cat
この3つの投稿タイトルがあった場合、通常の投稿タイトルでの昇順(a-z)ソートを行った場合、
- A Cat
- Movies
- The Books
という順序になりますが、最初のA とかThe とかはメインタイトルではないので、
- The Books
- A Cat
- Movies
このようなソートが実現できるようにという事でした。
正直、そんなに難しくないだろうと思っていました… 😳
そういう機能がどっかにあるんだろうなぁ~と思って、ひたすら内部のコードをにらめっこしていたのですが、、、
exclude とかオプションで指定できるから、それっぽいのがどうせあるんでしょ…?と思って探していましたが。。。
私が探している限り、それっぽいものは見つかりませんでした。。 😥
(もしあるようでしたら、ご教授いただけますと幸いです 🙂 )
「しょうがないか。じゃあ、投稿一覧を取得して → タイトルからTheとかを除外して → ソートして → それをフロントエンドの投稿一覧に表示させるような方法にしようかな」
とやってみましたが、今度はページ送りが、ソートする以前のものになってしまう。。
う~ん、、おおもとを変更しないとだめかな。。SQL文変更しないと、だめかもな。。 😕
という事で、 posts_orderby っていう所にフックをかけて、MySQL側でTheとかを抜いた状態でソートしてねっていう感じにしようかと思いましたが、、
それっぽい方法のSQL文が、ググってもなかなか出てこない。。
あれ、これって既にありそうな機能だけどなぁ。 🙁
何を参考にしたかはたくさん見たのでもう覚えていないのですが、
ひたすらぐぐって、MySQLドキュメント見て、ぐぐって、ドキュメント見て、●●を投げて、、、
なんとか解決しました。
MySQL :: MySQL 5.1 Reference Manual :: 12.5 String Functions
(SQL詳しくない人は苦労します。私は詳しくないので苦労しました。。。 😳 )
ちなみに、除外する言葉は自分で追加できるようにしているので、ソート対象から「タイトル」を選択すると、その言葉を入力する事ができるようになります。
ダウンロードされるかたはこちらからどうぞ。
コメントを残す