以下のコードは、 を含む最初の画像のみを投稿することを除いて、問題なく動作しますmain_
。「main_」という単語を含む列の値を取得する必要があるため、複数の画像を投稿できます。したがって、3 つ以上の画像がある場合main_img_url
、ループはこれを認識し、それに応じて追加する必要があります。画像の場所を以下に示します。ハンドラの開始と終了。
CSV の例を次に示します。
post_title, post_content, main_img_url, main_img_url
これが私のコードです:
function app_csv_to_array($file = '', $delimiter = ',') {
if(!file_exists($file) || !is_readable($file))
return false;
$header = NULL;
$data = array();
if(false !== $handle = fopen($file, 'r')) {
while(false !== $row = fgetcsv($handle, 1000, $delimiter)) {
if($header)
$data[] = array_combine($header, $row);
else
$header = $row;
}
fclose($handle);
}
return $data;
}
function process($file) {
$rows = $this->app_csv_to_array($file);
foreach($rows as $row) {
$post['post_title'] = sanitize_text_field($row['post_title']);
$post['post_content'] = sanitize_text_field($row['post_content']);
$post['post_status'] = 'publish';
$post['post_author'] = 658;
$post_id = wp_insert_post($post);
//////////////// I want the loop to start here //////////////////
foreach($row as $key => $val) {
if(strstr($key, 'main_')) {
$tmp = download_url( $file );
preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $file, $matches);
$filename = strtolower(basename($matches[0]));
}
}
//////////////// ends here //////////////////
}
}