web-dev-qa-db-ja.com

Wpが500内部サーバーエラーの原因となる

私は自分の設定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」を発生させることなく)

1
Dejo Dekic

あなたがやろうとしていることをするためにdie($msg);を使います。 wp_die() はHTTPエラーコードを返し、エラーページにメッセージを渡します。デフォルトのコードは、実行しない場合は500(内部サーバーエラー)です。戻りコードを引数に設定します。

3
webaware

これは本当にうまくいきました。

 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() ); 
        }
   }
2
Dejo Dekic