J'ai collé mes codes ICI dans Pastebin.
La chose est que, j'ai des messages, où la vignette de la publication est la première image et les champs personnalisés sont utilisés pour stocker les 3 autres images de la publication. Les champs de formulaire fonctionnent, car je pourrais changer/éditer les champs, mais le problème vient de l’éditeur de média. Au moment où je télécharge une image, cela ne prend pas l'image, mais enregistre un message d'erreur dans la base de données:
O: 8: "WP_Error": 2: {s: 6: "erreurs"; a: 1: {s: 12: "upload_error"; a: 1: {i: 0; s: 212: "Le fichier est vide. Veuillez télécharger quelque chose de plus substantiel. Cette erreur peut également être causée par la désactivation des téléchargements dans votre php.ini ou par la définition de post_max_size comme étant inférieur à upload_max_filesize dans php.ini. ";}} S: 10:" error_data "; a: 0 : {}}
Mais j’ai utilisé un plugin de champs personnalisés avancés, et cela fonctionne correctement avec la même image, et l’utilitaire de téléchargement de média par défaut WordPress fonctionne également avec le même fichier image. Donc, je pense qu'il n'y a pas de restriction comme max_filesize dans mon hôte local. Et aussi, j'ai essayé ceci sur le serveur, et ça marche jusqu'à la même chose.
J'ai échoué à télécharger une image.
Quel est le problème dans mon code?
Oui, j'ai le problème. Une minute hors piste, et c'est faux! : p
Sur les lignes 80, 87, 93 et 99 dans Codes Pastebin , la syntaxe de media_handle_upload()
était incorrecte .
Il devrait être remplacé par
media_handle_upload($postid,'product_image_1');
à
media_handle_upload('product_image_1', $postid);
Parce que la syntaxe de media_handle_upload()
est la suivante:
media_handle_upload( $file_id, $post_id, $post_data, $overrides );
Le $post_id
ne peut pas être avant le $file_id
.