2011/05/07

そもそも

カスタム投稿の機能を使った場合は、カスタム分類という仕組みを利用しないと、記事の分類ができないようだ。そして、タグも然り。分類やタグと使って書籍の情報をいろんな角度から見せようと思うと、テンプレートタグを駆使しないといけなくなってくるのだが、カスタム投稿だとそれがややこしい。

そもそも、書誌情報に関しては、素直に投稿を使い、それ以外のページをカスタム投稿にしたらいいのかもしれない、という結論に落ち着きそうな予感。。。

2011/05/04

書誌情報とカバー画像

「カスタム投稿」という機能を使うことは決定した。何点か投稿してデータベースの構造を探ってみることにした。

ワードプレスのデータベース名はwpでテーブルがいくつかある。現サイトでは書誌情報は1頁ごとのhtmlファイルである。すでにその情報はある程度構造化してデータベースに格納してある。ワードプレスでは、一点ごとに投稿という形で書誌情報を登録することになり、その除法が格納されるテーブルがwp_posts。今回、書誌情報の色々なスペック(定価、判型、ISBNなど)はカスタムフィールドという機能を使って投稿することとした。そのデータはwp_postmetaというテーブルに格納される。

wp_postsとwp_postmetaの関係はwp_postsのIDがwp_postmetaのpost_idと一致するということ。ちなみにwp_postsのIDはauto_incrementで、wp_postmetaのauto_incrementなキーはmeta_idとなる。

wp_postmetaの構造は結構シンプルで、同名のキーがあっても問題ないように考慮されているようだ。今回は、投稿タグやカテゴリには手を出していない。そっちはテーブルの関係は若干入り組んでいる。

第一段階として行ったことは、まずwp_postsに書籍名、目次、内容などのデータを挿入し、そのレコードのIDを取得して、それをwp_postmetaのpost_idの値にして書誌情報データを挿入。目次や内容の値は、アポストロフィー等の記号をちゃんとエスケープしておかないといけない。

次はカバー画像。投稿の中に挿入するよりも、「アイキャッチ画像」という機能を使った方がよさげである。 そこで、同様に何点か挿入してからデータベースの動きを見る。

関係のあるテーブルは先ほどと同じで、wp_postsとwp_postmeta。
注目すべきwp_postsの項目は次の通り。
  • ID:auto_incrementな値。仮に画像投稿IDとしておく。
  • post_status:データの公開状況。親の状態を継承。
  • post_title:画像のタイトル。
  • post_name:投稿の名前。
  • post_parent:親子関係。この画像がアイキャッチ画像として使用される投稿のID。
  • post_type:投稿データのタイプ。attachmentでメディア。
  • post_mime_type:メディアのタイプ。
  • guid:投稿した画像の場所?
wp_postmetaでは3つのレコードが作られるようだ。
  •  アイキャッチ画像と投稿の関係?
    • meta_id: auto_incrementな値。
    • post_id:上記wp_postsのpost_parentと同じ値。
    • meta_key:"_thumbnail_id"という値。
    • meta_value:画像のID。上記wp_postsのID。
  • アイキャッチ画像の情報
    • meta_id:auto_incrementな値。
    • post_id:上記wp_postsのID。
    • meta_key:"_wp_attachment_metadata"という値。
    • meta_value:画像の大きさなど配列で値が入っている。
  • アイキャッチ画像の場所?
    • meta_id:auto_incrementな値。
    • post_od:上記wp_postsのID。
    • meta_key:"_wp_attached_file"という値。
    • meta_value:wp/content/uploads以下のディレクトリ名とファイル名。
ぐぐってみるが、関係のある情報がありそうでなかったりするものだ。全てを確かめるのも面倒になってきて、手探り状態でレコードを挿入していく。wp_postmetaの_wp_attachment_metadataのレコードは必要無さげだったので無視した。

とここまできてブラウザで確認。うまく行っているようではある。wp_postmetaのレコード数が肥大化していくのが気にはなっているのだが。。。

2011/05/01

カスタム投稿

どのように書誌情報を追加(投稿)するか? カスタム投稿、という機能を使うと便利なようだ。とはいっても実質的には、wp_postsにデータは格納される。post_typeの値で通常の投稿か、カスタム投稿か、などなどが決まる。

カスタム投稿にあたっての情報はここ。
WordPressをカスタマイズするなら絶対覚えておきたい条件分岐やカスタム投稿タイプなどいろいろ
カスタム分類を投稿一覧カラムに表示する 

再構築に当たって

まず再構築の目的。
  1. 更新作業の簡略化。
  2. サイトの使いやすさの向上。
  3. 今までにないwサイト。
今までにないってのがどうゆうことなのかは自分でもよくわかっていない。(キリッ
まぁ、面白くなっていればいいとしよう。

 大まかな作業の流れとしては
  1. 今のサイトの情報(html)をデータベース化
  2. CMSを使ってみるので、その勉強
  3. CMSに1のデータベースを突っ込む
  4. 適当に調整w
ということを考えているんだけど、何か間違っているような気もするが、気にしない。今回はCMSとして無償のwordpressを使うことにする。

と実はここまでは半年ぐらい前には構想済みで、早速1の作業にとりかかったのだが、現サイトのhtmlがまったく構造化されておらず途方に暮れて放り出していたのだ。とはいえ、ここで止まっていても埒があかないから、正規表現勉強したり、rubyに手を出してみたりとか、文字コードをちょっと調べてみたりして、何とかデータベース化する手順はできた。

それが3月末。そして今2と3に取り組んでいる。数週間前は、データベースできたからそれをwpで読み込ませればいいだけだね、楽チンだぁ、とか思っていたんだけど、そう簡単な話ではないようだ。wpの機能をより生かすためには、投稿という形でデータベースに格納されていたほうがよいってのがわかったのがつい先ほど(つまりwp_postsというテーブルにレコードを挿入するだけでなく、メタ情報や、カテゴリのテーブルも更新しなければいけない)。色々と調べてくうちに、メモがわりにブログつけるかな、と思うようになって前回の投稿となった。

さて、話は変わるが、今回の再構築に当たってwp本を何冊かかったので現状でのインプレ。
まず、「PHPによるWordPressカスタマイズブック」。分類を文類を表記しているのはいただけないwと思いつつも知りたい情報が結構載っていて重宝している。特にデータベースに関する章は助かった。
「WordPress 3 サイト構築スタイルブック」 。Notesという囲み記事に色々とtipsをのせているのだが、それを検索できないのがつらい。CMS的とサブタイトルがあるのなら、記事データをどのような形式にしてインポートするのかについて説明があるとよかった。
「WordPress ポケットリファレンス」。一番最初に買った。これでWordPressの概要をつかんだ。でも同じ説明がなんども出てくるのは困った。

codexに大抵のことは載ってるけど、知りたいことは大概訳されていないんだな。。。

ということで

大部が間が空いてしまった。その間に、制作部から編集部への異動があって、InDesignにどっぷりかかわることもなくなってしまい、原稿整理と校正と企画立案で忙しい状況である。

制作部にいたときから、自社サイトの更新作業も受け持つことになっていたのだが、これがなかなか面倒。まず、書籍の書誌情報の頁を作り、その書籍が属するカテゴリの頁を更新し、そしてトップ頁も更新する。さらに検索用のテキストファイルにデータを追加する。もし書籍のカテゴリが複数あれば、書誌情報の頁ももう一度作り(各頁にカテゴリ表示があるのだ)、カテゴリの頁を更新しなければいけない。
新刊が書店に出る数週間前にはサイト上に情報を出し始めるのだが、その段階では、「近日発行」というアイコンをつけ、書店に出るタイミングで、「新刊」というアイコンに変更する。同じタイミングで、カートを表示さて、サイトで購入できるようにする。もし、その書籍が改訂版であれば、古い情報は削除しなければいけない。
書誌情報の頁はhtmlファイルなのだが、そのファイル名は、カテゴリ用コード+発行年月+社内用書籍コードという三段構えになっている。カバーの画像は大と小があり、先ほどのファイル名を流用する。云々。。。。。

自社サイトが構築されたのは数年前で、担当者のA氏はもういない。ウェブの知識がほぼない後任者がA氏のやり方を引き継いで、何人か続き、自分にまわってきたわけだ。実際は、個人的にウェブ構築をやってみたかったので、名乗り上げたのだが。その時は、制作の仕事も落ちついてきており、DTPとウェブを絡めて何か面白いことができないか、と思っていたのだが、当てが外れて編集の仕事になってしまったとw。

編集の仕事が意外に手間取っていて、ウェブの方は引き継いだ通りのやり方で更新していたのだが、さすがに面倒くさくなってきて、この春ぐらいには何とかしようと思い立ったのである。で、再構築にあたってのメモをつけようと考えていたとき、このブログの存在を思い出したわけだ。