J'utilise Frontier Post le plug-in pour la publication frontale et cela fonctionne très bien, mais j'aimerais ajouter ceci: lorsqu'un utilisateur télécharge/sélectionne une vedette image Je voudrais qu'il soit immédiatement affiché (un peu comme Facebook lorsque vous importez une nouvelle image de couverture) et que vous n'ayez pas à attendre après la soumission.
Voici le code pertinent du plugin:
if ( fp_get_option_bool("fps_show_feat_img") )
{
//force grid view
//update_user_option( get_current_user_id(), 'media_library_mode', 'grid' );
//set iframe size for image upload
if ( wp_is_mobile() )
{
$i_size = "&width=240&height=320";
$i_TBsize = "&TB_width=240&TB_height=320";
}
else
{
$i_size = "&width=640&height=400";
$i_TBsize = "&TB_width=640&TB_height=400";
}
?>
<fieldset class="frontier_post_fieldset_tax frontier_post_fieldset_tax_featured">
<?php
$FeatImgLinkHTML = '<a title="ADD COVER IMAGE" href="'.site_url('/wp-admin/media-upload.php').'?post_id='.$post_id.$i_TBsize.'&tab=library&mode=grid&type=image&TB_iframe=1'.$i_size.'" id="set-post-thumbnail" class="thickbox">';
if (has_post_thumbnail($post_id))
$FeatImgLinkHTML = $FeatImgLinkHTML.get_the_post_thumbnail($post_id, 'thumbnail').'<br>';
$FeatImgLinkHTML = $FeatImgLinkHTML.'<br>'.__("ADD COVER IMAGE", "frontier-post").'</a>';
echo $FeatImgLinkHTML."<br>";
echo '</fieldset>';
}
Je ne sais pas si WordPress est capable de faire cela, mais j'ai essayé d'ajouter cette fonction que j'ai trouvée pour créer des vignettes.
function make_thumb($src, $desired_width) {
/* read the source image */
$source_image = imagecreatefromjpeg($src);
$width = imagesx($source_image);
$height = imagesy($source_image);
/* find the "desired height" of this thumbnail, relative to the desired width */
$desired_height = floor($height * ($desired_width / $width));
/* create a new, "virtual" image */
$virtual_image = imagecreatetruecolor($desired_width, $desired_height);
/* copy source image at a resized size */
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
/* create the physical thumbnail image to its destination */
imagejpeg($virtual_image);
}
$thumb = fopen(the_post_thumbnail_url(post-thumbnail), "r");
$desired_width = 300;
make_thumb($thumb, $desired_width);
Lorsque je l'ajoute en dehors de if (has_post_thumbnail($post_id))
, un avertissement m'indique que la variable dans fopen est vide. Lorsque je le déplace dans la déclaration if
, rien ne se passe.
Est-ce que ce que j'essaie de faire est possible et si oui, quel est le meilleur moyen de le faire?
Merci.
Remarque: j'ai posé la question au développeur du plug-in, mais je n'ai reçu aucune réponse.
Si vous souhaitez afficher une image sans la stocker sur le serveur et récupérer cette URL en premier, vous devez générer une URL locale à insérer dans votre balise d'image. Cela signifie utiliser du javascript. En fait, c'est assez simple ( props ):
À l'endroit où vous souhaitez que l'image apparaisse, insérez:
<img id="temporary-id" alt="your image" max-width="640px" max-height="400px" />
Puis modifiez le champ de téléchargement de fichier sous la forme suivante:
<input type="file" onchange="document.getElementById('temporary-id').src = window.URL.createObjectURL(this.files[0])">
Maintenant, il faudrait que cela fonctionne avec Frontier Post. Puisque vous ne voulez pas modifier le plugin lui-même, vous devez écrire votre propre plugin qui modifie le comportement du plugin parent. C'est possible, mais pas simple, et implique une analyse approfondie du plugin parent.