WordPress

formularze — Jak zezwolić określonym rozszerzeniom i rozmiarowi pliku na załącznik wp_mail?

  • 7 września, 2014
  • 3 min read
formularze — Jak zezwolić określonym rozszerzeniom i rozmiarowi pliku na załącznik wp_mail?


Próbuję utworzyć formularz z opcją załącznika, który zostanie wysłany na e-mail po przesłaniu formularza na stronie WordPress.

Moje kody działają dobrze i wysyłają wiadomość e-mail w formacie tabeli HTMKL na mój adres e-mail. Mogę również wysłać załącznik za pomocą kodów. Problem pojawia się, gdy wezmę pod uwagę rozszerzenia plików załączników i rozmiar plików. Nie wiem, jak ograniczyć duży rozmiar plików i ustawić załączniki tylko dla niektórych dozwolonych rozszerzeń.

Mój kod to:

<?php
//Setup an empty array.
$errors = array(); 
    if($_POST["submit"]) {
    $to = "myemail@gmail.com";
    $subject = "New reservations request";
    $hotel = $_POST["hotel_url"];
    $sender = $_POST["sendername"];
    $senderEmail = $_POST["senderEmail"];

    //Check the name and make sure that it isn't a blank/empty string.
    if(empty($sender)){
        //Blank string, add error to $errors array.        
        $errors['sendername'] = "Please enter your name!";
    }

    /*  attachment */   
    move_uploaded_file($_FILES["attachment"]["tmp_name"],WP_CONTENT_DIR .'/uploads/'.basename($_FILES['attachment']['name']));
    $attachments = array(WP_CONTENT_DIR ."/uploads/".$_FILES["attachment"]["name"]);    

    if(empty($errors)){

        $mailBody = "<table border="1">
                       <tr>
                        <th>No</td>
                        <th>Item</td>
                        <th>Description</td>
                       </tr>
                       <tr>
                        <td>01</td>
                        <td>Hotel</td>
                        <td>$hotel</td>
                       </tr>
                       <tr>
                        <td>02</td>
                        <td>Name</td>
                        <td>$sender</td>
                       </tr>
                       <tr>
                        <td>03</td>
                        <td>E-Mail</td>
                        <td>$senderEmail</td>
                       </tr>
                    </table>";  

            $headers = array('From: '.$_POST['sendername'].' <'.$_POST['senderEmail'].'>');

            $mail_sent = wp_mail( $to, $subject, $mailBody, $headers, $attachments );   
        }
    }

    if ($mail_sent) {
?>
    <p>Request sent</p>

<?php 
} else {
?>

<form id="" name="" action="<?php echo get_permalink(); ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="hotel_url" value="<?php echo get_permalink();?>" />

    <div class="section-heading"><h6>Your Details</h6></div>    
    <div class="label-input-wrapper">
        <div class="form-label">Name</div>
        <div class="form-input">
            <input type="text" name="sendername"/>
            <?php if(isset($errors['sendername'])) { echo '<span style="color: red">'.$errors['sendername'].'</span>'; } ?>
        </div>
    </div>

    <div class="label-input-wrapper">
        <div class="form-label">E-Mail</div>
            <div class="form-input">
                <input type="email" name="senderEmail" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$" required value="<?PHP if(!empty($errors)) { echo $senderEmail;} ?>"/>
            </div>
    </div>  

    <label for="uploaded_file">Select A File To Upload:</label>
    <input type="file" name="attachment">

    <input type="submit" value="Submit" name="submit">
</form>

<?php
}
?>

Powyższy kod wysyła załącznik na moją pocztę i zapisuje plik w moim katalogu przesyłania. Wiem, że muszę coś zrobić w tej okolicy /* załącznik */ aby zezwolić na określone rozszerzenia i rozmiar pliku. ale jak to zrobić? np. jeśli muszę zezwolić tylko na pliki .png, .jpg, .pdf, a maksymalny rozmiar pliku to 1 MB, jak mogę to zrobić? gdzie i jaki kod mam zmienić na powyższe kody?

Warto przeczytać!  Jak używać skrótów w motywach WordPress


Źródło