タイトルのとおりです。正確にはインポートして上書き。自己忘備録。
実現したいこと・・・「第8回ゼロから始めるWordPress勉強会」での質問まとめ を参照
wordpressのカスタムフィールドに入力した商品価格(消費税5%を含む値)を一括で変更したい。件数は2万件。文字の単純な置き換え(A→Bなど)ではないのでGoogle先生に聞いても他に記述がなかった。いや、きっとあったんだろうが見つけられなかった。orz
【解決法(やったこと)】
データベース(MySQL)に格納されているレコードをcsv形式にてエクスポートして一括変換の後、こんどは再度インポート上書き。←まぐれでうまく行っただけで、うまく行った理由、不具合の検証は追々行っていきます。綱渡り~ ^^;)
手順①レコードのエクスポート
WordPressの場合、カスタムフィールドの値はmysqlの「postmeta」というテーブルに格納されています。このpostmeta(デフォルトでは接頭値wp_がついてwp_postmetaとなっているはず)で該当するデータを検索。”meta_key”は「定価(税込)」、”meta_value”は数値(税込み価格)が入っています。
以下はphpmyadminの操作。データベースを選択後、検索タブで下のように設定。検索語は「定価(税込)」。検索条件は厳密には「完全一致」がいいでしょうね。「postmeta」テーブルを選択、検索フィールドはmeta_key。
そうすると検索結果出るので表示ボタンで表示させる。
一覧のページ一番下にクエリ結果のエクスポートボタンがあるのでポチっとな。
エクスポート形式は色々選べますが、csv形式を選択。理由は加工しやすいからです!あと、excel形式だと65536行までなので、それ以上の件数が扱えないからです!
下のように各項目をチェック。特にオプションの「フィールド区切り記号」はデフォルトでは「;」となっているが、「,」(半角カンマ)に変更。
今回の事例(数値)ではフィールド囲み記号はなくてもいいですが、2バイト文字やフィールドの値にカンマが入っている場合などに不具合が出てくるので、今後のためにデフォルトの「”」にしておきます。また、後々編集でわかりやすいように「1行目にフィールド名を追加する」にチェックを入れる。
その他は「圧縮なし」で、この段階では文字コードの変換も「non」です。最後に「実行」ボタンをポチっとな。
手順②レコードの編集
吐出されたcsvの文字コードをフリーソフトを用いて変換。「KanjiTranslator」「文字コード判定&変換ツール.NET」などがお勧め。おそらく文字コードはUTF-8なので、SJISに変換。その後csvファイルをexcelで開く。
下図のようなデータになっているが、セルE2に「5%対応の税抜き価格を算出する関数「=ROUND(D2/105*100,0)」を入力し、ドラッグして全行に適用。税抜き価格を算出。コピー、貼り付け(注意!:形式を選択して貼り付け→”値”チェック)、E列切り取り→D列に上書き。
これでデータの編集は終了。下は出来上がりのcsv。この段階で8%の消費税率に変換しておいてもいいんですが、またどうせ税率が変わるので本体価格に変換した値を、WP上で税込み表示させる関数を適用する方向で考えます。
最後に一行目のフィールド名(meta_id、post_id・・・・)は忘れずに削除しておくこと!これはレコードではないので不必要。







