J'ai la fonction de télécharger des images dans l'API de paramètres, il télécharge les images comme prévu, mais le problème survient lorsque l'utilisateur choisit de télécharger. fichier non-image pour empêcher les utilisateurs de télécharger d'autres fichiers (fichiers non-image), j'utilise wp_die('No image found');
an conduisant à redouté 500 Erreur de serveur interne message affiché. Chose étrange, mon wp_die wp_die('No image found');
fonctionne correctement sur mon ordinateur. ordinateur local mais non en ligne.
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;
}
J'ai essayé de changer wp_die()
en echo 'no image found';
et ceci se produit: maintenant sur mon locall machine, il ne fait écho à rien (aucun avertissement ne s'affiche), mais maintenant en ligne cela fonctionne et affiche l'avertissement "aucune image trouvée" ...
Je sais que je pourrais simplement supprimer la partie else{ wp_die('No image found'); }
et n’afficher aucun avertissement, mais POURQUOI ne fonctionne-t-il pas comme prévu?
Quelqu'un peut-il me dire ce qui ne va pas avec mon code et comment afficher correctement l'avertissement avec wp_die ('Aucune image trouvée') (sans provoquer "500 Erreur de serveur interne")?
Utilisez die($msg);
pour faire ce que vous essayez de faire. wp_die () renvoie un code d'erreur HTTP et transmet votre message à la page d'erreur. Le code par défaut est 500 (erreur de serveur interne) si vous ne l'utilisez pas. t pas définir le code de retour dans les arguments.
Cela a fonctionné vraiment bien pour moi:
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() );
}
}