J'essaie de créer un tableau d'images pour un script de galerie de diaporamas. Vous devez donc séparer les images de la boucle de publication. Avez-vous une idée de la meilleure façon de réaliser cela et de faciliter l'ajout d'images? Je peux utiliser un script pour récupérer des pièces jointes (voir ci-dessous), mais cela semble un peu compliqué:
http://digwp.com/2009/08/awesome-image-attachment-recipes-for-wordpress/
La meilleure option serait-elle d'utiliser quelque chose comme le plug-in more fields et de créer plusieurs champs de texte dans lesquels publier les URL de photos?
Ils utilisent donc la médiathèque pour télécharger des images et récupérer les URL à mettre dans le message.
Dans l’idéal, j’essaie d’obtenir un scénario simple: ils téléchargent les images en une seule fois, sous forme de galerie ou d’images individuelles, écrivent le texte de description de leur galerie et les enregistrent.
La meilleure façon d’attribuer des images à un message est de les télécharger dans la zone de publication/nouveau message de WordPress. Vous pouvez également supprimer des images à partir de là.
Cela dit, voici comment procéder. Vous allez vous connecter à wp_enqueue_script
et appeler wp_enqueue_script
pour ajouter votre script de galerie à la page. Ensuite, vous utiliserez wp_localize_script
, qui imprimera un objet javascript pour Nice juste au-dessus de votre script.
Dans votre fonction accrochée, vous accédez à la variable $post
, qui contient la publication actuelle. Vous n'avez pas besoin d'être dans la boucle pour l'obtenir. Et si vous en avez, vous pouvez obtenir des publications enfants (telles que des pièces jointes), ce qui facilite grandement l'obtention d'images en dehors de la boucle.
<?php
add_action( 'wp_enqueue_scripts', 'wpse20321_enqueue_scripts' );
function wpse20321_enqueue_scripts()
{
// If this isn't a singular post, return -- don't enqueue anything
if( ! is_singular() ) return;
// enqueue your gallery script
wp_enqueue_script(
'wpse20321-gallery-script',
trailingslashit( get_stylesheet_directory_uri() ) . 'path/to/gallery.js',
// use trailingslashit( plugin_dir_url( __FILE__ ) ) . 'path/to/gallery.js' if you're in a plugin
array( 'jquery' )
);
// now we'll get the attachments...
global $post;
if( empty( $post ) ) $post = get_queried_object();
$attachments = get_posts(
array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'post_status' => 'inherit',
'post_parent' => $post->ID
)
);
if( ! $attachments ) return;
$out = array();
$out['img_list'] = array();
foreach( $attachments as $a )
{
$img = wp_get_attachment_image_src( $a->ID, 'full' );
$out['img_list'][] = array(
'image' => $img[0],
'width' => $img[1],
'height' => $img[2]
);
}
// call wp_localize_script, which will spit out a Nice JSON for you,
// right before your enqueued gallery script, ready for use.
// the object name will be wpse20321
wp_localize_script(
'wpse20321-gallery-script',
'wpse20321',
$out
);
}
Vous pouvez ajouter tout ce dont vous avez besoin à cet objet JS. Voulez-vous que l'attribut de titre soit enregistré pour l'image?
foreach( $attachments as $a )
{
$img = wp_get_attachment_image_src( $a->ID, 'full' );
$out['img_list'][] = array(
'image' => $img[0],
'width' => $img[1],
'height' => $img[2],
'title' => $a->post_title
);
}
Dans votre fichier de fonctions, placez ceci:
//gives me different image sizes
if ( function_exists( 'add_image_size' ) )
{
add_image_size( 't1x1', 145, 200, true );
add_image_size( 't2x2', 200, 200, true );
add_image_size( 't3x2', 307, 417, true );
add_image_size( 't3x3', 600, 400, true );
add_image_size( 't4x3', 680, 500, true );
}
///////////////////////////////////////////////
// Start Gallery Function
////////////////////////////////////////////////
function wpo_get_images($size = 'thumbnail', $limit = '0', $offset = '0', $big = 'large', $post_id = '$post->ID', $link = '1', $img_class = 'attachment-image', $wrapper = 'div', $wrapper_class = 'attachment-image-wrapper' , $wrapper2 = 'div' ) {
global $post;
$images = get_children( array('post_parent' => $post_id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
if ($images) {
$num_of_images = count($images);
if ($offset > 0) : $start = $offset--; else : $start = 0; endif;
if ($limit > 0) : $stop = $limit+$start; else : $stop = $num_of_images; endif;
$i = 0;
foreach ($images as $attachment_id => $image) {
if ($start <= $i and $i < $stop) {
$img_title = $image->post_title; // title.
$img_description = $image->post_content; // description.
$img_caption = $image->post_excerpt; // caption.
//$img_page = get_permalink($image->ID); // The link to the attachment page.
$img_alt = get_post_meta($attachment_id, '_wp_attachment_image_alt', true);
if ($img_alt == '') {
$img_alt = $img_title;
}
if ($big == 'large') {
$big_array = image_downsize( $image->ID, $big );
$img_url = $big_array[0]; // large.
} else {
$img_url = wp_get_attachment_url($image->ID); // url of the full size image.
}
// FIXED to account for non-existant thumb sizes.
$preview_array = image_downsize( $image->ID, $size );
if ($preview_array[3] != 'true') {
$preview_array = image_downsize( $image->ID, 'thumbnail' );
$img_preview = $preview_array[0]; // thumbnail or medium image to use for preview.
$img_width = $preview_array[1];
$img_height = $preview_array[2];
} else {
$img_preview = $preview_array[0]; // thumbnail or medium image to use for preview.
$img_width = $preview_array[1];
$img_height = $preview_array[2];
}
// End FIXED to account for non-existant thumb sizes.
///////////////////////////////////////////////////////////
// This is where you'd create your custom image/link/whatever tag using the variables above.
// This is an example of a basic image tag using this method.
?>
<?php if ($wrapper != '0') : ?>
<<?php echo $wrapper; ?> class="<?php echo $wrapper_class; ?>">
<?php endif; ?>
<?php if ($wrapper2 != '0') : ?>
<<?php echo $wrapper2; ?>>
<?php endif; ?>
<?php if ($link == '1') : ?>
<a href="<?php echo $img_url; ?>" title="<?php echo $img_title; ?>">
<?php endif; ?>
<img class="<?php echo $img_class; ?>" src="<?php echo $img_preview; ?>" alt="<?php echo $img_alt; ?>" title="<?php echo $img_title; ?>" />
<?php if ($link == '1') : ?>
</a>
<?php endif; ?>
<?php if ($img_caption != '') : ?>
<div class="attachment-caption"><?php echo $img_caption; ?></div>
<?php endif; ?>
<?php if ($img_description != '') : ?>
<div class="attachment-description"><?php echo $img_description; ?></div>
<?php endif; ?>
<?php if ($wrapper2 != '0') : ?>
</<?php echo $wrapper2; ?>>
<?php endif; ?>
<?php if ($wrapper != '0') : ?>
</<?php echo $wrapper; ?>>
<?php endif; ?>
<?
// End custom image tag. Do not edit below here.
///////////////////////////////////////////////////////////
}
$i++;
}
}
}
///////////////////////////////////////////////
puis appelez les images qui sont téléchargées sur n’importe quel message avec ceci:
<ul>
<?php wpo_get_images('t4x3','0','0','slide',"$post->ID",'0','portfolio-photo','li', 'theclass' );?>
</ul>
vous pouvez voir qu'il y a différentes options à définir, comme la taille de l'image (la première option et quelques autres pour jouer avec.
toutes vos images téléchargées sont enregistrées dans la bibliothèque multimédia. Vous pouvez rédiger un texte de description d'image lors d'une nouvelle publication.
Pas:
posts-> addnew-> télécharger une image-> Choisir une bibliothèque de média-> sélectionner une image-> Maintenant vous avez plus d'options comme image (Titre, Texte alternatif, Légende, Description, URL du lien, Alignement, Taille) -> Puis cliquez sur Insérer dans l'article -> Enregistrer toutes les modifications.
J'espère que cela vous sera utile :)
Hack hack, mais ça va marcher:
Comme je le disais, affreux. Vous seriez mieux, si vous vous contentiez simplement du JSON à la fin de la page, par exemple, dans le pied de page, mais que vous rassemblez les images de la boucle dans une chaîne.