web-dev-qa-db-fra.com

obtenir des images jointes pour poster

Je souhaite pouvoir utiliser les images de la médiathèque dans un curseur jQuery sur la page d'accueil afin que quelqu'un d'autre puisse facilement mettre à jour les images sans devoir les coder en dur. J'ai joint un tas de photos à un message et j'ai essayé

<?php
$image_query = new WP_Query(array('name'=>'slider-images'));
while ( $image_query->have_posts() ) : $image_query->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>';
            echo '<img src="'.wp_get_attachment_url($attachment->ID).'" />';
            echo '</li>';
        }
    }
endwhile;
wp_reset_postdata();
?>

mais il n'affiche rien. Y a-t-il un problème avec mon code ou existe-t-il un moyen plus simple/meilleur de regrouper des images plutôt que de les mettre dans un message?

EDIT: Si j'utilise the_content () dans ma boucle $ image_query, les images sont comme suit

<p>
    <a href="...">
        <img src="..." />
    </a>
</p>

mais ce dont j'ai besoin c'est quelque chose comme

<li>
    <a href="...">
        <img src="..." />
    </a>
</li>
3
Devin Crossman

Il vaut mieux utiliser get_children que get_posts. Voici un exemple rapide qui fonctionnera. Cela se présente sous la forme d'une fonction définie dans votre plugin ou dans functions.php, puis utilisez-la comme balise de modèle.

    /**
     * Gets all images attached to a post
     * @return string
     */
    function wpse_get_images() {
        global $post;
        $id = intval( $post->ID );
        $size = 'medium';
        $attachments = get_children( array(
                'post_parent' => $id,
                'post_status' => 'inherit',
                'post_type' => 'attachment',
                'post_mime_type' => 'image',
                'order' => 'ASC',
                'orderby' => 'menu_order'
            ) );
        if ( empty( $attachments ) )
                    return '';

        $output = "\n";
    /**
     * Loop through each attachment
     */
    foreach ( $attachments as $id  => $attachment ) :

        $title = esc_html( $attachment->post_title, 1 );
        $img = wp_get_attachment_image_src( $id, $size );

        $output .= '<a class="selector thumb" href="' . esc_url( wp_get_attachment_url( $id ) ) . '" title="' . esc_attr( $title ) . '">';
        $output .= '<img class="aligncenter" src="' . esc_url( $img[0] ) . '" alt="' . esc_attr( $title ) . '" title="' . esc_attr( $title ) . '" />';
        $output .= '</a>';

    endforeach;

        return $output;
    }
5
Chris_O