私は自分の設定API内で画像をアップロードする機能を持っています、それは予想通りに画像をアップロードしますが、ユーザーがアップロードすることを選択したときに問題が生じます 非画像ファイル ユーザーが他のファイル(非画像ファイル)をアップロードするのを防ぐために私はwp_die('No image found');
を使っています 500内部サーバーエラー メッセージが表示されます。奇妙なことに、私のwp_die wp_die('No image found');
は私の上で問題なく動作しています。 ローカルコンピュータ だがしかし オンライン。
function validate_setting($plugin_options){
//echo '<pre>'; print_r($_FILES); echo '</pre>';
$keys = array_keys($_FILES);
$i = 0;
foreach ($_FILES as $image) {
if($image['size']){
//Is it an image?
if(preg_match('/(jpg|jpeg|png|gif)$/i',$image['type'])){
$override = array('test_form' => false);
$file = wp_handle_upload($image,$override);
$plugin_options[$keys[$i]] = $file['url'];
}
else{
wp_die('No image found');//This triggers 500 Internal Server Error WHY??
//echo:'no image found'; //Now this DON'T work locally but works ONLINE?!?
}
}
else{
$options = get_option('theme_options');
$plugin_options[$keys[$i]] = $options[$keys[$i]];
}
$i++;
}
return $plugin_options;
}
wp_die()
をecho 'no image found';
に変更しようとしましたが、これが起こります。 locall マシンは「何も」エコーしません(警告は表示されません)。 オンライン それは動作し、「画像が見つかりません」という警告を表示します...
私は単にelse{ wp_die('No image found'); }
部分を削除して警告を表示しないことを知っていましたが、なぜそれが意図したように機能していないのですか?
私のコードの何が問題なのか、wp_die( 'No image found')を使って警告を適切に表示する方法を教えてもらえますか (「500 Internal server error」を発生させることなく)?
あなたがやろうとしていることをするためにdie($msg);
を使います。 wp_die() はHTTPエラーコードを返し、エラーページにメッセージを渡します。デフォルトのコードは、実行しない場合は500(内部サーバーエラー)です。戻りコードを引数に設定します。
これは本当にうまくいきました。
else{
$error = new WP_Error( 'not_found', _('No image found! Please upload images only!'),
array( 'title' => _('Plugin Error'), 'response' => '406', 'back_link' => true ) );
if( is_wp_error($error) ){
wp_die( $error, '', $error->get_error_data() );
}
}