2012/01/03

2012

仕事が忙しすぎて放置プレイだったウェブ作業にようやく戻って来れた。といっても正月中だけだろうけど。
さすがに半年も間が空くとデータベースの構造を忘れてしまってもう一度やり直しだ。集中してやりきってしまわないとこうゆう二度手間になってしまう。

ということで、ひとまずはfunctions.phpとwp_postsを見直さねば。
ワードプレスのバージョンも上がってしまったし。

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に大抵のことは載ってるけど、知りたいことは大概訳されていないんだな。。。