web-dev-qa-db-fra.com

exposition de pièces jointes téléchargées vers l'extrémité avant - délicat

je suis probablement en train d'enfreindre quelques règles de bon sens ici.

existe-t-il un moyen d'utiliser wordpress 'bake dans la gestion des pièces jointes pour un formulaire de téléchargement dans un modèle de thème? oui, le front end - je sais.

je crée un site commémoratif et je veux que les gens puissent laisser des "commentaires" photographiques textuels à une personne chère que notre communauté a perdue.

mais ce ne sont pas des utilisateurs de wordpress. ils sont des tantes et des enfants et tout le reste.

ces personnes ne pourront pas comprendre WP l'interface utilisateur par défaut des médias et je ne veux pas qu'elles soient obligées de se connecter et de jouer. trop déroutant pour eux. S'il ne s'agissait pas d'un projet aussi spécifique et délicat, je n'essaierais pas de modifier autant les règles.

je comprends que j'ouvre des failles de sécurité en permettant à quiconque de télécharger un fichier, mais je pense que c'est un peu nécessaire. toutes les pièces jointes téléchargées seront "en attente". J'ai le texte et les photos définir un type de message personnalisé, pas sous forme de commentaires, afin que je puisse utiliser certaines données de poste intégrées.

et ce serait génial si je pouvais utiliser la fonction de vérification de fichiers intégrée, la gestion, le nommage, la taille, etc. de fichiers, etc. même si la gestion des fichiers se fait au début.

je pensais que je pourrais peut-être utiliser: wp_handle_upload ()

en incluant '../ wp-admin/includes/file.php'

mais ça n'a pas marché. Je reçois une erreur fatale lorsque j'essaie de l'inclure. est-ce TOTALEMENT contre les règles d'inclure l'administrateur inclut dans les modèles ... probablement.

je pourrais faire moi-même tout le traitement des fichiers, mais je me suis dit qu'il y aurait peut-être un moyen d'utiliser les fonctionnalités de wordpress et que cela pourrait être plus sûr.

ou y a-t-il des suggestions sur un autre itinéraire que je devrais suivre complètement?

malheureusement, le temps presse, le service commémoratif aura lieu dans quelques jours.

merci beaucoup

jonah

1
Jonah Goldstein

voici la fonction que j’utilise chaque fois que j’accepte les envois de front-end et que vous pouvez l’utiliser dans vos fichiers de modèle:

function insert_attachment($file_handler,$post_id,$setthumb='false') {

  // check to make sure its a successful upload
  if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __return_false();

  require_once(ABSPATH . "wp-admin" . '/includes/image.php');
  require_once(ABSPATH . "wp-admin" . '/includes/file.php');
  require_once(ABSPATH . "wp-admin" . '/includes/media.php');

  $attach_id = media_handle_upload( $file_handler, $post_id );

  if ($setthumb) update_post_meta($post_id,'_thumbnail_id',$attach_id);
  return $attach_id;
}

Utilisation:

// set $post_id to the id of the post you want to attach
// these uploads to (or 'null' to just handle the uploads
// without attaching to a post)

if ($_FILES) {
  foreach ($_FILES as $file => $array) {
    $newupload = insert_attachment($file,$post_id);
    // $newupload returns the attachment id of the file that
    // was just uploaded. Do whatever you want with that now.
  }
}
7
Bainternet