web-dev-qa-db-fra.com

Comment puis-je ajouter "Utiliser comme image sélectionnée" à une métabox personnalisée?

J'implémente une méta-boîte personnalisée qui permet à l'utilisateur d'ajouter des images via un simple champ de saisie de fichier (basé sur le code de ce site: Script de la boîte à méta ). . Ce code permet d'ajouter plusieurs images en tant que pièces jointes à la page et ce, sans la boîte de dialogue de téléchargement complète. Il vous suffit de sélectionner le fichier image, de publier la page et de télécharger l'image. Cela fonctionne très bien, cependant, j'aimerais pouvoir ajouter un lien sur chaque image afin que vous puissiez définir une image en tant qu'image sélectionnée.

Voici une image montrant à quoi cela ressemble: Image thumbnails with links

J'ai fouillé autour de l'utilitaire de téléchargement d'images standard et j'ai constaté qu'il existait un fichier JS (/wp-admin/js/set-post-thumbnail.js) déclenché sous la forme d'un appel AJAX, ce qui définit l'image. comme une image en vedette. J'utilise le code suivant (repris par PHP d'où l'échappement) pour ajouter le lien "Utiliser comme image sélectionnée":

<script type=\"text/javascript\" src=\"/wp-admin/js/set-post-thumbnail.js\"></script>
<a class=\"wp-post-thumbnail\" id=\"wp-post-thumbnail-1915\" href=\"javascript:void(0)\" onclick=\"WPSetAsThumbnail(&quot;{$att->ID}&quot;, &quot;{$nonce}&quot;);return false;\">Use as featured image</a>

J'ai compris cela avec un peu d'essais et d'erreurs mais cela ne fonctionne pas car je reçois une erreur Uncaught ReferenceError: setPostThumbnailL10n is not defined, c'est parce que je n'ai pas JS chargé qui fournit le setPostThumbnailL10n et probablement d'autres problèmes aussi!

En gros, j'essaie de voir s'il est possible d'exploiter facilement cette fonctionnalité intégrée. Mon autre option est de lancer mon propre JS, qui enregistre une image telle que présentée. J'aurai aussi besoin de pouvoir supprimer une image telle que décrite. Toutes les idées sont les bienvenues, car cela semble un peu un territoire inexploré, car googler, cela n’a rien donné!

3
Rick Curran

même si vous aviez inclus tous les fichiers nécessaires, vous devrez toujours créer des champs cachés supplémentaires tels que _nonce pour passer le

check_ajax_referer( "set_post_thumbnail-$post_ID" );

vous devez également créer un champ caché d'action pour identifier la casse de l'appel Ajax avec la valeur: "set-post-thumbnail"

Vous feriez mieux de créer votre propre appel Ajax et de simplement l'utiliser dans votre fonction de rappel:

    set_post_thumbnail( $post, $thumbnail_id );
//or
    update_post_meta( $post->ID, '_thumbnail_id', $attachment_id );

et de désactiver l'utilisation

delete_post_meta( $post_ID, '_thumbnail_id' );
3
Bainternet