質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

4229閲覧

Really Simple CSV Importerでカスタムフィールドの同じkeyが複数ある時のインポート方法について

maimi

総合スコア12

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2018/02/15 11:59

WP All Export を利用してエクスポート。
Really Simple CSV Importerでインポートしようとしております。

WP All Exportでエクスポートするとカスタムフィールドの同じkeyのvalueは「|」で区切られ1つのセルに入るような仕様になっており。

投稿画面上のカスタムフィールドでは、
img:A
img:B
img:c
img:d

と登録されていたものが

WP All Export を利用してエクスポートしたCSV上では
key行のセルに
A|B|C|D

と1つにまとめられたデータでエクスポートされ、
Really Simple CSV Importerでインポートすると

img:A|B|C|D

とカスタムフィールドが登録されてしまいます。
以前のサイトの内容と同じように、
img:A
img:B
img:c
img:d

という内容でCSVインポートする方法を教えてください。

検索をかけてみても見当たらず、解決策が見当たらなかったので、ご質問させていただきました。
どうぞ、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

このページに倣ってreally_simple_csv_importer_save_metaを使って配列に変換すればいいようです。

function really_simple_csv_importer_save_meta_filter( $meta, $post, $is_update ) { $meta['img'] = str_replace( '|', ",", $meta['img'] ); $meta = explode( ',', $meta['img'] ); $meta = array( 'img' => $meta ); return $meta; } add_filter( 'really_simple_csv_importer_save_meta', 'really_simple_csv_importer_save_meta_filter', 10, 3 );

ただしこの場合シリアライズされた状態で保存されるので管理画面では見る事ができません。
見れなくても保存したものを取り出せればいいだけならこれだけでいいと思います。

管理画面で見たい、編集したいならば少々ダサイですが

function really_simple_csv_importer_save_meta_filter( $meta, $post, $is_update ) { $meta['img'] = str_replace( '|', ",", $meta['img'] ); $meta = explode( ',', $meta['img'] ); $meta = array( 'Temporary_Field_Name' => $meta ); return $meta; } add_filter( 'really_simple_csv_importer_save_meta', 'really_simple_csv_importer_save_meta_filter', 10, 3 ); function my_add_post_meta() { $args = array( 'posts_per_page' => -1, 'post_type' => 'post', ); $posts = get_posts( $args ); $post_ids = wp_list_pluck( $posts, 'ID' ); foreach( $post_ids as $post_id ) { if( $metas = get_post_meta( $post_id, 'Temporary_Field_Name', true ) ) { foreach( $metas as $meta ) { add_post_meta( $post_id, 'img', $meta, false ); } delete_post_meta( $post_id, 'Temporary_Field_Name' ); } } } add_filter( 'admin_init', 'my_add_post_meta');

一旦別名で保存してから取り出して保存し直せば管理画面で見られます。
どちらのコードもカスタムフィールドの保存が済んだら不要なので削除してください。
Smart Custom Fields等を利用する方法もありますが、少し設定が必要なので手間をかけたくなければ上記の方法が楽だと思います。

投稿2018/02/16 05:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maimi

2018/03/13 09:16

一度試した時には上記ソースで実現できたのですが、本日functions.phpに記入し、Really Simple CSV Importerインポート作業をしたところカスタムフィールドが全てインポートされない。という現象が起こりました。 こちら何かアップデート。必須要件等ありますでしょうか。 管理画面で見たい、編集したいほうのソースになります。 どうぞ、よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2018/03/13 09:26

一か月も経過したら覚えてません。 考えられるのはCSVファイルのフォーマットが上手く出来た時と異なってるとか? 同一のフォーマットのCSVファイルのサンプルを貰えたら試してみますが?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問