「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
ドロップダウン/ラジオボタンのカスタムフィールドの選択肢を変更する
MTQに以下のような質問が上がっていました。
カテゴリーに満たない記事の補足要素などは、ドロップダウンやラジオボタンで選択させて表示させるフローがありますが、カテゴリーと違い、ドロップダウンやラジオボタンでは文字列の変更に耐える仕様ではありません。
これを文字列の変更にも対応させるようにする方法はないものでしょうか。
Movable Typeの標準機能では対処できませんが、データベースを直接に書き換えれば対処できます。
その方法を紹介します。
1.phpMyAdminでデータを書き換える
ドロップダウン/ラジオボタンのスタムフィールドで、フィールドの選択肢を変更する場合は、変更後にデータベースを書き換えて、個々のブログ記事で対象のカスタムフィールドの値を修正します。
phpMyAdmin等を使って、以下のようなSQLを実行します。
update mt_entry_meta, mt_entry set entry_meta_vchar_idx = '変更後の値' where entry_meta_type = 'field.ベースネーム' and entry_meta_vchar_idx = '変更前の値' and entry_meta_entry_id = entry_id and entry_blog_id = ブログのID
通常、ドロップダウンやラジオボタンでは、選択肢が複数あります。
それぞれの選択肢について、上記のSQLを順に実行します。
「変更後の値」「変更前の値」は、変更前後の個々の選択肢の値にします。
「ベースネーム」は、カスタムフィールドにつけたベースネームを指定します。
また、「ブログのID」には、対象のブログのIDを指定します。
2.事例
以下のような事例があるとします。
- ブログのIDは2
- ブログ記事に都道府県を選択するためのドロップダウンのカスタムフィールドを追加
- 選択肢(オプション)は「東京,千葉,神奈川,埼玉」
- カスタムフィールドのベースネームは「entry_pref」
この状況で、選択肢を「東京都,千葉県,神奈川県,埼玉県」に変更するものとします。
まず、「東京」を「東京都」に修正するために、以下のSQLを実行します。
update mt_entry_meta, mt_entry set entry_meta_vchar_idx = '東京都' where entry_meta_type = 'field.entry_pref' and entry_meta_vchar_idx = '東京' and entry_meta_entry_id = entry_id and entry_blog_id = 2
次に、「千葉」を「千葉県」に修正するために、以下のSQLを実行します。
update mt_entry_meta, mt_entry set entry_meta_vchar_idx = '千葉県' where entry_meta_type = 'field.entry_pref' and entry_meta_vchar_idx = '千葉' and entry_meta_entry_id = entry_id and entry_blog_id = 2
同様の手順で、「神奈川」→「神奈川県」と、「埼玉」→「埼玉県」の修正を行うSQLも実行します。