Bonjour à tous!

Voici mon problème, j'ai adapté l'affichage des news pour ma page d'accueil wordpress, en voulant afficher "l'image à la une" en tant que fond pour chaque article affichée. Pour ce faire dans mon template j'ai codé ceci:

content.php

<div style="background: url( <?php 
 if ( has_post_thumbnail()) {
   $large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'large');
   echo $large_image_url[0];
 }
 ?>) no-repeat;" class="news">

 <div class="textn">
<h1><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'toolbox' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
<?php if ( 'post' == get_post_type() ) : ?>
<?php toolbox_posted_on(); ?>
<?php endif; ?>
</div>

Seulement quand j'affiche mes news, seul le premier article affiche "l'image à la une", je ne vois pas le problème, et je suis un peu faible niveau php, le design étant plus mon domaine :/

Voici le code de la page index.php:

<?php if ( have_posts() ) : ?>
                <?php toolbox_content_nav( 'nav-above' ); ?>
                <?php /* Start the Loop */ ?>
                            <?php query_posts('category_name=news&showposts=3'); ?>
                <?php while ( have_posts() ) : the_post(); ?>
                    <?php
                        /* Include the Post-Format-specific template for the content.
                         * If you want to overload this in a child theme then include a file
                         * called content- ___.php (where___ is the Post Format name) and that will be used instead.
                         */
                        get_template_part( 'content', get_post_format() );

                    ?>
                <?php endwhile; ?>

Pour finir une illustration:

6 réponses


Siris
Auteur
Réponse acceptée

Merci pour ta réponse:

Voici ce que j'ai fait, après avoir lu la doc. Merci pour tout ;)

?php 
$postid = get_the_ID();
 if (has_post_thumbnail($postid)) {

   $large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($postid), 'large');
   echo $large_image_url[0];
 }

 ?>

C'est bizarre tu as regardé le code source HTML pour voir si il n'y a pas un indice ?

Siris
Auteur

Oui, j'ai regardé, et on dirait que la boucle n'opère pas en fait vu qu'on remarque ceci dans le code html:

<div style="background: url( http://localhost/wordpress/wp-content/uploads/2011/11/Sans-titre-4.jpg) no-repeat;" class="news">

 <div class="textn">
<h1><a href="http://localhost/wordpress/?p=1405" title="Permalink to Un titre d’article" rel="bookmark">Un titre d’article</a></h1>
<span class="sep">Posted on </span><a href="http://localhost/wordpress/?p=1405" title="22 h 52 min" rel="bookmark"><time class="entry-date" datetime="2011-11-06T22:52:45+00:00" pubdate>6 novembre 2011</time></a><span class="byline"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="http://localhost/wordpress/?author=1" title="View all posts by admin" rel="author">admin</a></span></span>
</div>
<!-- #post-1405 -->
</div>

<div style="background: url( ) no-repeat;" class="news">

 <div class="textn">
<h1><a href="http://localhost/wordpress/?p=1381" title="Permalink to Les quinze ans de Tomb Raider!" rel="bookmark">Les quinze ans de Tomb Raider!</a></h1>
<span class="sep">Posted on </span><a href="http://localhost/wordpress/?p=1381" title="18 h 41 min" rel="bookmark"><time class="entry-date" datetime="2011-10-04T18:41:14+00:00" pubdate>4 octobre 2011</time></a><span class="byline"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="http://localhost/wordpress/?author=1" title="View all posts by admin" rel="author">admin</a></span></span>
</div>
<!-- #post-1381 -->
</div>

<div style="background: url( ) no-repeat;" class="news">

 <div class="textn">
<h1><a href="http://localhost/wordpress/?p=1359" title="Permalink to Remportez un code de téléchargement pour Tomb Raider 2 sur le PSN" rel="bookmark">Remportez un code de téléchargement pour Tomb Raider 2 sur le PSN</a></h1>
<span class="sep">Posted on </span><a href="http://localhost/wordpress/?p=1359" title="19 h 45 min" rel="bookmark"><time class="entry-date" datetime="2011-09-30T19:45:16+00:00" pubdate>30 septembre 2011</time></a><span class="byline"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="http://localhost/wordpress/?author=1" title="View all posts by admin" rel="author">admin</a></span></span>
</div>
<!-- #post-1359 -->
</div>

Jpense avoir vu ce qui cloche, has_post_thumbnail attend en paramètre l'ID du post tu devrait faire has_post_thumbnail(get_the_ID())

Siris
Auteur

J'ai essayé selon tes conseils:

<?php 
 if (has_post_thumbnail(get_the_ID())) {
   $large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'large');
   echo $large_image_url[0];
 }
 ?>

Mais ça ne change rien :/

Lit bien la doc :)
get_post_thumbnail_id prend aussi l'id du post en paramètre