web-dev-qa-db-fra.com

Obtenir toutes les images d'une seule page en utilisant cette requête

J'ai quelques problèmes avec cet exemple de code de widget. Je souhaite obtenir toutes les images (sans la vignette du message) à partir d'une page intitulée "Galerie", mais pour une raison quelconque, cette fonction extrait toutes les images téléchargées de l'ensemble du site.

Aussi, comment pourrais-je exclure la vignette du message de cette requête?

  query_posts('pagename=gallery');
if (have_posts()) : 
echo "<ul class='recentwidget group photowidget'>";
while (have_posts()) : the_post();
    $args = array(
    'post_type' => 'attachment',
    'numberposts' => 1,
    'post_status' => null,
    'post_parent' => $post->ID
);

$attachments = get_posts( $args );
    if ( $attachments ) {
    foreach ( $attachments as $attachment ) {
       echo '<li class="left imageshadow photolarge">';
       echo wp_get_attachment_image( $attachment->ID, 'full' );
       echo '</li>';
      }
    }
endwhile;

endif; 
wp_reset_query();
7
Dean Elliott

Utilisez get_children

J'ai utilisé ce code pour extraire toutes les images d'une galerie de pages dans l'ordre choisi. vous pouvez inclure ce code dans la boucle ou l'utiliser de manière autonome. il suffit de choisir le code post_parent approprié (voir ci-dessous l'exemple de code).

Cet exemple montre toutes les images associées à l'identifiant de page 1, regardez:

        $images = get_children( array( 'post_parent' => 1, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 999 ) ); 
/* $images is now a object that contains all images (related to post id 1) and their information ordered like the gallery interface. */
        if ( $images ) { 

                //looping through the images
                foreach ( $images as $attachment_id => $attachment ) {
                ?>

                            <?php /* Outputs the image like this: <img src="" alt="" title="" width="" height="" /> */  ?> 
                            <?php echo wp_get_attachment_image( $attachment_id, 'full' ); ?>

                            This is the Caption:<br/>
                            <?php echo $attachment->post_excerpt; ?>

                            This is the Description:<br/>
                            <?php echo $attachment->post_content; ?>

                <?php
                }
        }

Recherchez l'identifiant de la publication que vous souhaitez extraire et insérez-le dans cet argument: 'post_parent' => 1 (remplacez le 1 par votre identifiant de page)

vous pouvez aussi utiliser:

'post_parent' => $post->ID

Si vous souhaitez utiliser get_children dans une boucle et obtenez l'ID de publication à partir de l'ID de publication renvoyé.

Si vous souhaitez exclure l'image sélectionnée en tant qu'image sélectionnée, j'aurais une déclaration if pour vérifier si l'URL de l'image est égale à l'URL de l'image sélectionnée.

J'espère que cela t'aides! :)

8