こんにちはレターズです。
ReallySimpleCSVimporterでCSVを使ってカスタム投稿のデータをインポートするときに、SmartCustomField(プラグイン)への画像登録でかなりハマったので。。備忘録的に共有します。
やりたいことはここへの画像登録

結論:functions.phpに下記を追加します。
//
// really simple csv importer の登録後に発火します。(フック)
add_filter('really_simple_csv_importer_post_saved', function($post)
{
if (is_object($post)) {
//csvでインポートされたURLを見にいきます。
$image_url = SCF::get('slug-name', $post->ID);
// helper クラスのインスタンス生成
$h = RSCSV_Import_Post_Helper::getByID($post->ID);
// url先のイメージを取得します
$file = $h->remoteGet($image_url);
// IDを紐づけします。
$attachment_id = $h->setAttachment($file);
// 最後にフィールドのデータを上記IDで置き換えます
$h->setMeta( array( 'slug-name' => $attachment_id ) );
}
});
(参照元)
補足
処理の流れについて詳しく説明させていただきます。まず、CSVファイルに記載されている画像保存先のURLから画像データを取得します。次に、取得した各画像に対して一意のIDを生成し、紐付けを行います。その後、生成されたIDを使用してWordPressのカスタムフィールドの値を更新します。この際、’slug-name’の部分については、対象となる投稿のスラッグに応じて適切な値に置き換えて処理を実行してください。
このプロセスにより、画像の管理が体系化され、WordPressのカスタムフィールドとの連携がスムーズに行われます。また、各画像の追跡と管理が容易になり、システム全体の整合性が保たれます。
URLにまちがいがあったりすると、当然ですが、下記のようなエラーが表示されます。
Warning: Undefined variable $image_src in (省略).../wp-content/plugins/smart-custom-fields/classes/fields/class.field-image.php on line 79