meta情報の更新に関して、
if(isset($_FILES[$slideshow_img_img_cf_key]) && $_FILES["slideshow_img".$i."_img"]["size"] !== 0){}
という条件分岐により
そもそもinputタグに画像をセットせずに更新した場合は処理を行わないようにしているつもりですが、セットしていない部分についてもwp_postmetaに値が登録され、そのmeta_valueが$wp_upload_dir[‘url’].’/’.basename($file_name)の$file_nameが”(空)の展開したものになっているため、この条件分岐が役目をはたしていないと考えました。
調べるとinputタグ(type=”file”)のvalueの初期値は”(空)なので、
$file_name = basename($_FILES[$slideshow_img_img_cf_key]['name']);
$file_name = trim($file_name);
$file_name = str_replace(" ", "-", $file_name);
が空になっている=先ほどの条件分岐が機能していないのかなと考えています。
inputタグにファイルをセットしたもののみ画像の保存やmeta情報の更新をしているつもりなのですが、この条件ではおかしいですか?
shokun0803さん、返信ありがとうございます。
確かに、ファイルをアップロードしたものしかメタ情報を登録できていませんでした。
解決方法としては、上記のコードの画像保存の関数内の
if(isset($_FILES[$slideshow_img_img_cf_key]) && $_FILES["slideshow_img".$i."_img"]["size"] !== 0){}
に以下を追加する感じですかね?
else {
// 既存のデータベースの値を取得し、再度保存する処理
// wp_generate_attachment_metadata(), update_post_meta()等
}
またこの場合、$_FILESや画像をアップロードした場合の処理内で定義した$file_nameや$wp_upload_dirなどの変数は使えるのでしょうか?