le téléchargement d’image dans la page d’option d’administration de WordPress ne fonctionne pas

Publié par Jean-Michel le

Je travaille sur un plugin qui a en back-end pour ajouter l’url du site ou du post et une courte description et en front-end afficher ensuite dans un widget, j’ai un bouton pour une petite image du post à télécharger mais ça n’a pas marché mais le même code fonctionne bien en php normal…

 $upload_errors = array(
                              // http://www.php.net/manual/en/features.file-upload.errors.php
                                UPLOAD_ERR_OK               => "No errors.",
                                UPLOAD_ERR_INI_SIZE     => "Larger than upload_max_filesize.",
                                UPLOAD_ERR_FORM_SIZE    => "Larger than form MAX_FILE_SIZE.",
                                UPLOAD_ERR_PARTIAL      => "Partial upload.",
                                UPLOAD_ERR_NO_FILE      => "No file.",
                                UPLOAD_ERR_NO_TMP_DIR => "No temporary directory.",
                                UPLOAD_ERR_CANT_WRITE => "Can't write to disk.",
                                UPLOAD_ERR_EXTENSION    => "File upload stopped by extension."
                             );


                           // process the form data
                           $tmp_file = $_FILES['file_upload']['tmp_name'];
                           $target_file = basename($_FILES['file_upload']['name']);
                           $upload_dir = "uploads";

                           // You will probably want to first use file_exists() to make sure
                           // there isn't already a file by the same name.

                           // move_uploaded_file will return false if $tmp_file is not a valid upload file
                           // or if it cannot be moved for any other reason
                           if(move_uploaded_file($tmp_file, $upload_dir."/".$target_file)) {
                           $message = "File uploaded successfully.";
                            } else {
                                $error = $_FILES['file_upload']['error'];
                                $message = $upload_errors[$error];

                                }

c’est le formulaire utilisé pour télécharger l’image

  <form action='' method='post' name="text_form" onsubmit="return Blank_TextField_Validator()" enctype="multipart/form-data">
                             <table class='form-table'><tr valign='top'>
                             <th scope='row'><lable for='new_Directory_name'>Enter the Title:</lable></th>
                             <td><input type='text' id='newtextchange' name='newtextchange' size="100" /></br></td>
                             </tr>
                             <tr>
                             <th scope='row'><lable for='new_Directory_name'>Enter the Description:</lable></th>
                             <td><textarea rows="4" cols="50" name='textarea1'>

                             </textarea></br></td>
                             </tr>
                             <tr>
                             <th scope='row'><lable for='new_Directory_name'>Enter the URL:</lable></th>
                             <td><input type='text' id='newtextchange1' name='newtextchange1' size="100" /></br></td>
                             </tr>
                             <tr>
                             <th scope='row'><lable for='new_Directory_name'>Upload image:</lable></th>

                             <td> <input type="hidden" name="MAX_FILE_SIZE" value="1000000" /><input type="file" name="file_upload" /><br><br><input id='addtobow' class='button-secondary action' type='submit' value='Add to Best of web' name='submit'/></td>
                             </tr>
                             </table>


                          </form>

Solution n°1 trouvée

le problème est avec l’url de téléchargement de fichier et c’est ainsi que je le répare .., maintenant cela fonctionne bien …

$tmp_file = $_FILES['file_upload']['tmp_name'];
                          $target_file = basename($_FILES['file_upload']['name']);
                          //$upload_dir = "D:softwares_installedwampwwwwordpresswp-contentpluginsbestofwebuploads";
                            $upload_dir =ABSPATH . "wp-content/plugins/bestofweb/uploads";
                            $up_urlp1="/wp-content/plugins/bestofweb/uploads";
                          // You will probably want to first use file_exists() to make sure
                          // there isn't already a file by the same name.

                          // move_uploaded_file will return false if $tmp_file is not a valid upload file
                          // or if it cannot be moved for any other reason
                          if(move_uploaded_file($tmp_file, $upload_dir."/".$target_file)) {
                                //$message = "File uploaded successfully.";
                                //echo $upload_dir."/".$target_file;
                                //echo  bloginfo('wpurl');
                                $up_url= $up_urlp1."/".$target_file;
                                //echo $up_url;
                                //if($message == "File uploaded successfully.")
                                //  {
                                //  $imgpath=$upload_dir.

                                //  }

                                   } else {
                                     $error = $_FILES['file_upload']['error'];
                                    // $message = $upload_errors[$error];
                                   }

Solution n°2 trouvée

Vous devriez regarder wp_handle_upload pour celui-ci.
L’exemple qui y est donné est très utile.

Pour enregistrer l’url, vous pouvez utiliser les lignes suivantes :

$upload_overrides = array( 'test_form' => false );
$source = wp_handle_upload( $_FILES['file'], $upload_overrides );

if ( $source )
    $input = serialize( $source );

J’espère que cela aide!

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *