「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
カスタムフィールドの型を変える(その1)
カスタムフィールドを作ってデータを入力した後で、型を変えたい場面が出ることがあります(例:テキスト→ドロップダウン)。
しかし、Movable Typeの標準機能では、カスタムフィールドを一度作成すると、後で型を変えることができません。
そこで、データベースを直接に書き換えて、カスタムフィールドの型を変える方法を紹介します。
今日は、前提となる知識として、カスタムフィールドのデータベースの構造を解説します。
1.mt_fieldテーブル
個々のカスタムフィールドの定義は、「mt_field」というテーブルに保存されます。
このテーブルには、以下の列があります。
列名 | 内容 |
---|---|
field_id | ID |
field_basename | ベースネーム |
field_blog_id | カスタムフィールドが属するブログ/ウェブサイトのID システムのカスタムフィールドでは0 |
field_description | 説明 |
field_name | 名前 |
field_obj_type | カスタムフィールドを追加するオブジェクトの種類(entry、category、blogなど) |
field_options | オプション |
field_required | 入力必須のカスタムフィールドでは1、そうでなければ0 |
field_tag | テンプレートタグ名 |
field_type | カスタムフィールドのタイプ |
field_type列の値は、カスタムフィールドのタイプに応じて、以下の表のようになります。
フィールドのタイプを変える際に、この情報を使います。
タイプ | 値 |
---|---|
テキスト | text |
テキスト(複数行) | textarea |
チェックボックス | checkbox |
URL | url |
日付と時刻 | datetime |
ドロップダウン | select |
ラジオボタン | radio |
埋め込みオブジェクト | embed |
アイテム | file |
オーディオ | audio |
ビデオ | video |
画像 | image |
2.○○○_metaテーブル
カスタムフィールドのデータは、元のデータのテーブル名に「_meta」を付けた名前のテーブルに保存されます。
例えば、ブログ記事のテーブル名は「mt_entry」ですので、ブログ記事のカスタムフィールドのデータは、「mt_entry_meta」テーブルに保存されます。
個々のカスタムフィールドは、1つのカスタムフィールドにつき、1つのレコードとして、データベースに保存されています。
metaテーブルには、「○○○_meta_type」という列があり、その値が「field.ベースネーム」のような値になります(○○○は、「entry」など、オブジェクトの名前)。
「○○○_meta_○○○_id」の列には、カスタムフィールドを付けたオブジェクトのIDが保存されます。
また、「○○○_meta_vchar」「○○○_meta_vdatetime」など、データの型に応じた列があり、適切な列にデータが保存されるようになっています。
例えば、ブログ記事にテキストのカスタムフィールドを追加し、ベースネームを「entry_text」にしたとします。
そして、IDが1番/2番/3番のブログ記事で、このカスタムフィールドに以下のように値を設定したとします。
ID | 値 |
---|---|
1 | 東京 |
2 | 大阪 |
3 | 名古屋 |
テキストのデータは、metaテーブルの「○○○_vchar_idx」の列に保存されます。
ブログ記事にカスタムフィールドを追加した場合だと、mt_entry_metaテーブルに、以下のようなレコードができます。
entry_meta_entry_id | entry_meta_type | entry_meta_vchar_idx |
---|---|---|
1 | field.entry_text | 東京 |
2 | field.entry_text | 大阪 |
3 | field.entry_text | 名古屋 |
なお、カスタムフィールドのタイプと、そのデータが保存される列の関係は、以下の表のようになっています。
フィールドのタイプを変える際に、この情報を使います。
タイプ | 保存先の列名 |
---|---|
テキスト | vchar_idx |
テキスト(複数行) | vclob |
チェックボックス | vinteger_idx |
URL | vchar |
日付と時刻 | vdatetime_idx |
ドロップダウン | vchar_idx |
ラジオボタン | vchar_idx |
埋め込みオブジェクト | vclob |
アイテム | vclob |
オーディオ | vclob |
ビデオ | vclob |
画像 | vclob |