Pour développer: je voudrais utiliser le même code / apparence Modal (comme ceux utilisés dans wp.media.Modal, wp.media.FocusManager) pour ouvrir un modal de ma propre boîte de dialogue personnalisée, pas l'éditeur de médias. Dans le passé, j'ai utilisé des boîtes épaisses pour ce genre de choses, mais wp.media.Modal semble être la voie de l'avenir pour les modaux - Sans oublier que cela a l'air cool.
J'ai un peu fouillé la source JS et suis parvenu à quelques solutions possibles:
- "Emprunter" le code media-views.js et l'utiliser dans mon plugin.
- "Étendre" wp.media.Modal (après tout, c'est une vue dorsale).
- Créez une implémentation personnalisée, jQueryUI, etc.
- Abandonnez et utilisez thickbox.
Emprunter semble un peu moins dangereux que d'utiliser wp.media.Model.extend ({}), mais inutile. Je ne suis pas un grand fan des modaux de jQueryUI, mais cela ferait le travail. Dans le même temps, je pouvais faire une implémentation personnalisée de modaux (ou la baser sur une autre lib).
On dirait que je manque quelque chose d'évident: quelqu'un d'autre a-t-il réussi cela ou le nouveau code modal de la bibliothèque multimédia est-il "trop nouveau" pour permettre sa réutilisation?
Réponses:
Réponse et modification tardives. Avertissement: Ce qui suit n'est pas un code copier-coller.
Croquis
Comme je n'ai jamais essayé d'utiliser le modal média pour autre chose, voici un bref aperçu, esquissé en décomposant une partie d'un projet sur lequel je suis actuellement. Ce n'est pas un exemple prêt à l'emploi, mais il devrait vous rapprocher suffisamment. Il suffit de lire les commentaires attentivement et mettre en œuvre le PHP suivant dans vos objets.
PHP
Dans notre constructeur, nous enregistrons nos scripts, ajoutons des métadonnées contenant des informations et un bouton multimédia, filtrons des types MIME supplémentaires (par exemple ZIP) et prenons soin d'enregistrer les données supplémentaires:
Assurez-vous que vous abandonnez si vous n'avez pas besoin de ce script sur une page particulière. Cela économise de la mémoire, demande du temps et aide à garder votre installation propre.
Ensuite, nous ajoutons la méta-boîte. À l'intérieur de la fonction, nous pouvons compter sur la propriété des
$post
objetspost_type
, qui sera également définie pour les nouveaux messages. Comme nous avons déjà enregistré les rappels dans le constructeur aux crochets contextuels appropriés, nous pouvons simplement prendre n'importe quel type de message.Types MIME supplémentaires
Ajoutez simplement un tableau qui remplace ou ajoute aux types MIME par défaut du Media Modal. Vous pouvez également ajouter ou remplacer d'autres paramètres. Juste
var_dump( $settings );
pour voir ce que fournit le rappel. Assurez-vous également que nous n'interceptons pas sur le mauvais type de message.Rendre le contenu
Sauvegarder les données
Enfin, nous nous assurons que nos données sont correctement enregistrées et seront vérifiées. Utilisez toutes les
esc_*()
fonctions, le transtypage, les nonces et autres.Remarque finale, avant de passer à l'exemple JS: Le code est extrait d'un projet en cours. Donc, comme déjà mentionné, cela ne fonctionnera pas par défaut! Ce n'est qu'un guide et rien d'autre.
Javascript
Le javascript lui-même est assez simple. Ne pas. Mais comme vous pouvez le voir, j'injecte à la fois le jQuery en tant qu'objet de script localisé personnalisé dans la fonction. À partir de là, vous devrez ajouter la logique dont vous pourriez avoir besoin. L'environnement de base pour différents états et rappels est fourni et les
console.log()
s sont présents.Tutoriels
Dominik Schilling - l'auteur du gestionnaire de médias WP 3.5 - a écrit un ensemble de démos pour les modaux médias. Vous pouvez les voir sur GitHub .
la source