カスタムフィールドのプラグインは Smart Custom Fields を使っています。
CSVをインポートするプラグインは Really Simple CSV Importer を使いました。
Smart Custom Fields は、繰り返しフィールドが使えるので大変重宝しているプラグインです。今回、カスタムフィールドの繰り返しフィールドをCSVで一括登録したく、インポートする方法を探していた所、Really Simple CSV Importer のアドオンをインストールすることでインポートすることができました。
Really Simple CSV Importer の開発者さんが作ったアドオン↓をダウンロードして、WordPressのプラグインにインストールします。
Divide Meta Fields with Comma (Really Simple CSV Importer add-on) · GitHub
Smart Custom Fields で繰り返しフィールドを作ります。
CSVファイルの繰り返しフィールドにしたい箇所にカンマ区切りで値を入力します。
CSVファイルの入力例です。
CSVファイルをインポートした後の、投稿画面のカスタムフィールドです。
インポートした繰り返しフィールドを出力します。
<table> <tr> <th>ニックネーム</th> <th>年齢</th> <th>性別</th> </tr> <?php $repeat_group = SCF::get( 'join' ); foreach ( $repeat_group as $field_name => $field_value ) { ?> <tr> <td><?php echo esc_html( $field_value['nickname'] ); ?></td> <td><?php echo esc_html( $field_value['age'] ); ?></td> <td><?php echo esc_html( $field_value['sex'] ); ?></td> </tr> <?php } ?> </table>
このコードで出力されたのが↓になります。
画像を繰り返しフィールドにインポートする方法
画像の場合は、画像のIDをカンマ区切りにすることで、繰り返しフィールドにインポートできます。
Smart Custom Fields で、↓のような画像の繰り返しフィールドを作った場合
CSVファイルは、↓のように「scf_photo」に画像のIDをカンマ区切りで入力します。
そして、CSVファイルをインポートすると、↓のように画像を繰り返しフィールドにインポートできます。
後は例えば、↓のようにすると、インポートした画像を出力できます。
<ul> <?php $repeat_group = SCF::get( 'photo-repeat' ); foreach ( $repeat_group as $field_name => $field_value ) { ?> <?php $image_attributes = wp_get_attachment_image_src( $field_value['photo'] ); $image_alt = get_post_meta( $field_value['photo'], '_wp_attachment_image_alt', true ); ?> <li><img src="<?php echo $image_attributes[0]; ?>" width="<?php echo $image_attributes[1]; ?>" height="<?php echo $image_attributes[2]; ?>" alt="<?php echo esc_attr( $image_alt ); ?>"><br> <?php echo esc_html( $field_value['text'] ); ?></li> <?php } ?> </ul>
画像のIDの確認方法
「メディア→ライブラリ」のグリッド表示から、IDを確認したい画像をクリックします。
そうすると、↓のようにURLから画像のIDを確認できます。
「関連投稿」のカスタムフィールド
関連投稿のカスタムフィールドの名前を「connection」とした場合、上記のように投稿IDをカンマ区切りで記入すると関連投稿をインポートできます。
コメント
コメント一覧 (9件)
はじめまして!検索で記事に辿り着きました。SCFとRSCSVインポーターと繰り返しフィールドの組み合わせを扱っている記事はほぼ無く、路頭に迷っていた時に、昨日投稿されたばかりの記事を見つけました!書いてある通りに試したところあっさりインポートできました!素晴らしい記事を書いていただき、どうもありがとうございました!
minさん、コメントありがとうございます。
繰り返しフィールドのCSVインポートの記事ってないですよね。僕もWEBを徘徊し、解決するまで苦労したので記事にしてみました。
お役に立てたようでよかったです。
検索して検索してインポートまわりの知識を少しずつ吸収してはいるのですが、WordpressやPHPはまだまだ難しいです。。
さらにRS CSV Importer Media Add-Onを追加しての画像の繰り返しフィールドなのですが、
今回の記事と同様にカンマ区切りで画像のURLを記入しても、画像が取り込まれません。。
もしよろしければ、画像の繰り返しフィールドのCSVインポートの記事などは、
お願いできませんでしょうか?
minさん、こんばんは。
画像の場合は、画像のIDをカンマ区切りにすることで、繰り返しフィールドにインポートできますよ。
一応、記事に追記しましたので、ご確認ください。
IDの数字のカンマ区切りで取り込めてしまうのですね。。
人によりプラグインの組み合わせが違うので、自分の探している組み合わせで解説があると、
本当に助かります。。
画像URLのCSVから管理画面+記事に画像表示が出来るようになりましたら、
私も挑戦記事でも公開してみようかと思います!^^
度々のお願いを聞いていただき、ほんとうにありがとうございました!
minさん、こんにちは。
画像のURLからインポートすることがご希望だったんですね。
URLから、繰り返しフィールドへのインポートができましたら、是非記事を公開して教えてください。
とても参考になりました!
SCFのリピート項目が、テキストや画像の場合はできるのですが、フィールドが「関連する投稿」の場合、上記のようにやりますと、リピートせずに、1つに複数の値が入ってしまいますが、対処方法ございますでしょうか?
hogeさん、コメントありがとうございます。
「関連する投稿」のカスタムフィールドは使ったことがないのでhogeさんの実現したいことを僕が理解できていないかもしれませんがこの様なことでしょうか?
CSVファイルに関連する投稿の投稿IDをカンマ区切りで入力すれば「関連する投稿」をインポート出来ると思います。
質問に対する回答がズレているようでしたらコメントください。
詳細は記事の最後に追記しました。
あーなるほど!繰り返しフィールドの中に「関連する投稿」を入れると、1つに複数入ってしまい意図したようにならないですね。
繰り返しフィールドの中に関連投稿を入れたい場合は、面倒ですがカスタムフィールドでURLか投稿IDで関連投稿を取得してPHPを書いていくしかないかもしれませんね。