J'ai travaillé avec un script de front upload et post-création. Pour une raison quelconque, l'appel de la fonction media_handle_upload à partir de mon fichier project-save.php est renvoyé en tant que fonction non définie. Y a-t-il quelque chose qui me manque? Autorisations, fichiers supplémentaires, café?
Voici ma fonction dans functions.php
function process_attachments() {
//Process Uploads
if (!function_exists('wp_generate_attachment_metadata')){
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
}
if ($_FILES) {
foreach ($_FILES as $file => $array) {
if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK) {
return "upload error : " . $_FILES[$file]['error'];
}
$attach_id = media_handle_upload( $file, $post_id );
}
}
//Attachment ID if set
if ($attach_id > 0){
//and if you want to set that image as Post then use:
return $attach_id;
}
}
Et j'appelle cela depuis mon fichier project-save.php comme ceci (c'est allégé, je n'ai pas ressenti le besoin d'afficher les données du formulaire de post-création)
$attach_id = process_attachments();
if($attach_id > 0) {
//and if you want to set that image as Post then use:
$whimkey->attach_id = $attach_id;
}
Puisque media_handle_upload
est une fonction Wordpress comment pourrait-il être indéfini?
Donc, je ne sais pas si c'est la meilleure façon, mais mon problème était la déclaration if entourant le require_once sur les fichiers nécessaires contenant la fonction. Commenté la déclaration SI et il a fait le tour. Je vais prendre ce café maintenant;)
//if (!function_exists('wp_generate_attachment_metadata')){
require_once(ABSPATH . 'wp-admin/includes/image.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/media.php');
//}
En fonction de votre code, vous avez placé la mauvaise condition dans l'instruction if. Vous pouvez consulter le premier exemple ici: Media Hand Upload