カテゴリーページでキーワードなどの項目を任意に設定したいと思い、ちょっとチャレンジしてみました。
ただし、カテゴリーや投稿タグなどを管理している term、term_taxonomy テーブルには、投稿に対するカスタムフィールドのようなものが存在せず、項目を追加した場合にどこにデータを保存するかが問題になってきます。
では、どのような方法があるかというと
- optionsテーブルに配列として保存する
- termsテーブルにフィールドを追加する
- カスタムフィールドの内容を保存するpostmetaテーブルのようなテーブルを追加する
の3つが考えられます。これらの手法について
1.は、テーブル構造を変更することなく簡易に実装ができますが、検索性はほぼ0です。
2.は、多少の変更で get_category など従来の関数で情報の取得が可能で、検索性も良好ですが、項目毎にフィールドが必要になるため、自由な拡張は期待できません。
3.は、拡張性が高く検索性も保持されますが、独自の取得関数が必要になり、実装には一番手間がかかります。
今回は、テストの意味もあり、3の方法でトライしてみることにしました。