「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
数値型のカスタムフィールドを追加するプラグイン(その2)
昨日に続いて、数値型のカスタムフィールドを追加するプラグインについてお話しします。
今日は、既存のテキスト型のデータを数値型に変換する方法を解説します。
1.データのバックアップ
テキストから数値への変換は、phpMyAdmin等を使って、SQLを直接に実行する形で行います。
多くのデータが影響を受けますので、万が一の事態に備えて、ブログのデータを必ずバックアップしておいてください。
また、バックアップから正しく復元できることも、確認しておいてください。
2.SQLに必要な情報のチェック
SQLを実行する前に、以下の4つの情報をメモしておいてください。
- ブログのID
- 変換元のテキスト型フィールドのベースネーム
- 変換先の数値型フィールドのベースネーム
- 変換先の数値型フィールドの数値の型(整数/浮動小数点数)
3.SQLの実行
次に、phpMyAdmin等を使って、SQLを実行します。
まず以下のようなSQLを実行します。
delete mt_entry_meta.* from mt_entry_meta, mt_entry, mt_blog where entry_meta_entry_id = entry_id and entry_blog_id = blog_id and blog_id = ブログのID and entry_meta_type = 'field.変換先の数値型フィールドのベースネーム'
次に、以下のSQLを実行します。
「数値の型」のところには、整数型なら「vinteger」、浮動小数点型なら「vfloat」を入れます。
update mt_entry_meta, mt_entry, mt_blog set entry_meta_type = 'field.変換先の数値型フィールドのベースネーム', entry_meta_数値の型_idx = entry_meta_vchar_idx, entry_meta_vchar_idx = null where entry_meta_entry_id = entry_id and entry_blog_id = blog_id and blog_id = ブログのID and entry_meta_type = 'field.変換元のテキスト型フィールドのベースネーム'
例えば、以下のような変換を行いたいとします。
項目 | 値 |
---|---|
ブログのID | 1 |
変換元のテキスト型フィールドのベースネーム | text1 |
変換先の数値型フィールドのベースネーム | number1 |
変換先の数値型フィールドの数値の型 | 整数(vinteger) |
この場合、以下の順でSQLを実行します。
delete mt_entry_meta.* from mt_entry_meta, mt_entry, mt_blog where entry_meta_entry_id = entry_id and entry_blog_id = blog_id and blog_id = 1 and entry_meta_type = 'field.number1'
update mt_entry_meta, mt_entry, mt_blog set entry_meta_type = 'field.number1', entry_meta_vinteger_idx = entry_meta_vchar_idx, entry_meta_vchar_idx = null where entry_meta_entry_id = entry_id and entry_blog_id = blog_id and blog_id = 1 and entry_meta_type = 'field.text1'
4.ベースネーム/テンプレートタグ名の変更
次に、変換元のテキスト型のフィールドを削除します。
そして、変換先の数値型のフィールドで、ベースネームとテンプレートタグ名を、変換元のテキスト型のベースネーム/テンプレートタグ名に変更します。