【WordPress】【MW WP Form】画像データが消えてしまいました
Q&A
Closed
解決したいこと
WordPressでファイル(写真)を添付できる応募フォームを作成しました。
添付した写真はレンタルサーバ上に保存するよう設定しており動作確認もしていました(9月中旬)が、
現在レンタルサーバ上のディレクトリを確認するとファイルが1つもありません。
その他の応募フォームで入力された内容(応募者氏名や連絡先など)はWordPress上で確認できます。
また、今改めてテスト送信してみると写真がレンタルサーバ上の当該ディレクトリに保存されていることが確認できました。
保存期間などがあるのでしょうか…?
原因と、もし解決する方法に心当たりがある方がいらっしゃればご教示ください。
解決策がわからなくても、もし似た事象に遭遇した方がいらっしゃればお話うかがいたいです。
このような質問を投稿するのが初めてで情報が不足しているかもしれません。
申し訳ありませんが、よろしくお願いします。
動作環境など
WordPressテーマ:オリジナルを作成
応募フォーム:WordPressプラグイン「MW WP Form」
レンタルサーバー:さくらのレンタルサーバ
以下のように設定しました
・写真は1応募につき1~3枚送信可能(プルダウンで枚数を選択、入力欄は動的に変化)。
・写真はレンタルサーバ上に保存していく。
・フォームに入力した内容は運営側に自動でメール送信される。
その際、写真は添付されないがURLが記載され、クリックするとブラウザで写真が開き「名前を付けて保存」できる。
※このURLは下記で設定したレンタルサーバ上のディレクトリ「/○○○○.com/wp-content/uploads/mw-wp-form_uploads」。
MW WP Formに関するソースコード(Functions.php)
// MW WP Form フォーム送信日時を返却する
function send_date( $value, $key, $insert_contact_data_id ) {
if ( $key === 'send_date' ) {
return date_i18n( 'Y年m月d日' );
}
return $value;
}
add_filter( 'mwform_custom_mail_tag_mw-wp-form-84', 'send_date', 10, 3 );
// MW WP Form 添付ファイルのファイル名を返却する
function my_mail( $mail_raw, $values, $data ) {
$images = array( 'photo1', 'photo2', 'photo3' );
foreach ( $images as $image ) {
$image_url = $data->get( $image );
if ( $image_url ) {
$parse_url = parse_url( $image_url );
$path = explode( '/', $parse_url['path']);
$file_name = end( $path );
$mail_raw->body = str_replace( "{{$image}}", $file_name, $mail_raw->body );
}
}
return $mail_raw;
}
add_filter( 'mwform_auto_mail_raw_mw-wp-form-84', 'my_mail', 10, 3 );
// MW WP Form メールにファイルを添付しないよう設定する
function my_mail2( $mail_raw, $values, $data ) {
$mail_raw->attachments = ''; // 添付しない
return $mail_raw;
}
add_filter( 'mwform_admin_mail_raw_mw-wp-form-84', 'my_mail2', 10, 3 );
// MW WP Form フォームから送信された画像ファイルの保存先を設定する
function my_mwform_upload_dir( $path, $Data, $key ) {
return '/mw-wp-form_uploads';
}
add_filter( 'mwform_upload_dir_mw-wp-form-84', 'my_mwform_upload_dir', 10, 3 );
// MW WP Form 写真2枚目、3枚目がある場合、バリデーションを追加する
function my_validation_rule( $Validation, $data, $Data ) {
if($data['existsPhoto2']){
$Validation->set_rule( 'photo-title2', 'noEmpty', array( 'message' => '未入力です。' ) );
$Validation->set_rule( 'photo-place2', 'noEmpty', array( 'message' => '未入力です。' ) );
$Validation->set_rule( 'photo-day2', 'noEmpty', array( 'message' => '未入力です。' ) );
$Validation->set_rule( 'photo2', 'noEmpty', array( 'message' => '未入力です。' ) );
$Validation->set_rule( 'photo2', 'fileType', array(
'types' => 'JPG,JPEG,HEIC',
'message' => '許可されたファイルではありません。'
) );
$Validation->set_rule( 'photo2', 'fileSize', array(
'bytes' => 5242880,
'message' => 'ファイルサイズが大きすぎます。'
) );
}
if($data['existsPhoto3']){
$Validation->set_rule( 'photo-title3', 'noEmpty', array( 'message' => '未入力です。' ) );
$Validation->set_rule( 'photo-place3', 'noEmpty', array( 'message' => '未入力です。' ) );
$Validation->set_rule( 'photo-day3', 'noEmpty', array( 'message' => '未入力です。' ) );
$Validation->set_rule( 'photo3', 'noEmpty', array( 'message' => '未入力です。' ) );
$Validation->set_rule( 'photo3', 'fileType', array(
'types' => 'JPG,JPEG,HEIC',
'message' => '許可されたファイルではありません。'
) );
$Validation->set_rule( 'photo3', 'fileSize', array(
'bytes' => 5242880,
'message' => 'ファイルサイズが大きすぎます。'
) );
}
return $Validation;
}
add_filter( 'mwform_validation_mw-wp-form-84', 'my_validation_rule', 10, 3 );