web-dev-qa-db-fra.com

media_handle_upload: fonction non définie?

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?

1
Derek

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');
      //}
2
Derek

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

1
Rituparna sonowal