J'essaie de définir la vignette du message (image sélectionnée) avec du javascript à partir d'une image existante dans la galerie multimédia. Je pense aussi à une option basée sur php (une option qui nécessiterait un clic sur la mise à jour avant que les images ne s'affichent).
Un peu de fond
Je construis un site pour une salle de musique avec un post-type personnalisé "événement". La plupart du temps, ces événements sont uniques, mais certaines idées sont récurrentes (par exemple, soirée micro ouverte la plupart des mardis).
Je pensais que je voudrais mettre dans une liste déroulante avec quelques "préréglages" pour remplir les champs de formulaire add new event
dans le backend. C'est un jeu d'enfant (je pense) de le faire avec le tinymce et mes méta-champs personnalisés. La difficulté consiste à insérer par programme une image (déjà chargée dans une bibliothèque multimédia) dans la zone des images en vedette.
Je sais que je peux faire en sorte que quelque chose fonctionne avec le modèle, mais il serait agréable de voir cette vignette apparaître dans la vue add new/edit
.
Merci!
Vous devez faire un appel ajax avec l'action suivante: 'set-post-thumbnail'
Vérifiez dans admin-ajax.php (ligne 1477 de la version 3.3.2) les valeurs attendues et le nonce, mais en général, vous devez envoyer post_id, attachment_id et nonce.
Le nonce doit provenir de: wp_create_nonce ("set_post_thumbnail- $ post_id");
L'administrateur fait quelque chose comme:
uploader.bind('FileUploaded', function(up, file, response) {
jQuery.post(ajaxurl, {
action:"set-post-thumbnail", post_id: post_id, thumbnail_id: response.response, _ajax_nonce: '<?php echo $ajax_nonce;?>' , cookie: encodeURIComponent(document.cookie)
}, function(str){
var win = window.dialogArguments || opener || parent || top;
if ( str == '0' ) {
alert( setPostThumbnailL10n.error );
} else {
jQuery('#postimagediv .inside').html(str);
jQuery('#postimagediv .inside #plupload-upload-ui').hide();
}
}
);
jQuery("#postimagediv .inside h2.uploading_message").remove();
});
Je pense que la fonction update_post_meta créera la pièce jointe en vedette.
update_post_meta($post_id, '_thumbnail_id', $attachment_id);
Vous pouvez afficher les images dans une liste déroulante jquery image , demander à l’utilisateur de cliquer sur 'update', puis utiliser set_post_meta ou update_post_meta pour mettre l’image dans le message.
Si vous ne souhaitez pas ajouter de bouton supplémentaire, vous pouvez utiliser la solution à cette question pour enregistrer les métadonnées de votre type de message personnalisé .