web-dev-qa-db-fra.com

Ajout d'une pièce jointe au formulaire de contact à l'aide de wp_mail

Quelqu'un aurait-il la gentillesse de m'expliquer comment joindre un fichier téléchargé à un courrier électronique généré avec wp_mail? J'ai construit le formulaire, mais toutes les questions que je peux trouver en ligne se réfèrent à la manière de joindre un fichier prédéterminé plutôt qu'un fichier téléchargé par l'utilisateur.

EDIT J'essaye maintenant d'utiliser wp_handle_upload:

if ( ! function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . 'wp-admin/includes/file.php' );
$uploadedfile = $_FILES['file'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if ( $movefile ) {
  echo "File is valid, and was successfully uploaded.\n";
  var_dump( $movefile);
} else {
  echo "Possible file upload attack!\n";
}

... mais j'obtiens l'erreur suivante: "Le fichier est vide. Veuillez télécharger quelque chose de plus substantiel ...", ce qui, je pense, est dû au fait que je ne transmets pas correctement la variable de pièce jointe.

Mon champ de formulaire ressemble à:

<input type="file" name="uploaded_picture">

Quelqu'un pourrait-il indiquer comment je lie ces deux ensemble s'il vous plaît?

4
Kevin Nugent

En bref, je ne réussissais tout simplement pas à transmettre la bonne variable:

if ( ! function_exists( 'wp_handle_upload' ) ) {
    require_once( ABSPATH . 'wp-admin/includes/file.php' );
}

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

if( $movefile ) {
    //echo "File is valid, and was successfully uploaded.\n";
    //var_dump( $movefile);
    $attachments = $movefile[ 'file' ];
    wp_mail($to, $subject, strip_tags($message), $headers, $attachments);
} else {
    echo "Possible file upload attack!\n";
}

Mon champ de formulaire aurait dû être:

<input type="file" name="uploaded_file" accept="application/pdf">
3
Kevin Nugent