web-dev-qa-db-fra.com

Type de message personnalisé: Télécharger plusieurs images

Je crée donc ce thème Property Listing pour un de mes clients, et sur le type de message personnalisé (CPT) que j'ai créé, j'ai besoin d'ajouter une méta-boîte qui lui permet de télécharger plusieurs images - quelque chose de similaire à ceci:

 Upload Meta Box 

Comment pourrais-je faire ça? Tout ce que j'ai vu jusqu'à présent recommande des plugins comme Advanced Custom Fields, mais j'aimerais éviter d'utiliser des plugins tiers si je le peux.

Merci :)

1
Stephen

Je vous recommande ces vidéos -> https://www.youtube.com/playlist?list=PLIjMj0-5C8TJYSkKnUyHH1VXlIpvZXOMT

A mon avis, je préfère utiliser le plugin ACF. Le plugin permet de gagner du temps. C'est facile à utiliser et le client sera content. En outre, le client ne se souciera pas de savoir si vous avez utilisé un plugin ou si vous avez écrit le code vous-même, le client se souciera de la fonctionnalité.

Je suis le premier à ne pas installer de plugins mais le plugin ACF est nécessaire (obligatoire). Je l'utilise dans tous mes projets.

1
andresgl

Ajoutez un objet de sécurité pour les téléchargements de fichiers, comme ceci:

class FileSecure
{
    public resource $Allowed;
    private object $Info;
    public function __construct($allow)
    {
        $this->Allowed = $allow;    
        $this->Info = new finfo();
    }
    public function Check($file) : bool
    {
        if(in_array($fileType = $this->Info->file($file, FILEINFO_MIME_TYPE, $this->Allowed))) { return true; } else { return false; }
    }
}

$fileCheck = array(
     'Image' => new FileSecure(['image/bmp', 'image/gif', 'image/jpeg', 'image/png']),
     'Text' => new FileSecure(['text/plain']),
     'Compressed' => new FileSecure(['application/Zip', 'application/x-rar-compressed'])
);

Cliquez ici pour afficher tous les noms MIME des extensions

Ajoutez ensuite un formulaire frontal permettant le téléchargement de fichier et transmettez-le simplement à travers cet objet avant d'utiliser le fichier téléchargé.

// note it must exist on the server before checking
if(!$fileCheck['Image']->Check($filename)):
    // delete the file
endif;

Vous pouvez utiliser la base de données pour stocker des emplacements de fichiers ou simplement disposer d'un répertoire de téléchargement par défaut sur votre serveur et parcourir les fichiers contenus dans ce répertoire.

0
Jaquarh