web-dev-qa-db-fra.com

Comportement étrange de src d'IMG au sein d'une boucle simple

J'essayais de trier le look final de l'image sélectionnée d'un article, alors je voulais ajouter une classe à la balise img. Cependant, en cours de route, je rencontre un comportement étrange lorsque j'essaie d'utiliser la fonction the_post_thumbnail () . C'est le code qui a et qui fonctionne réellement:

    <?php
if (have_posts()) :
   while (have_posts()) : the_post(); ?>
           <article class="post">

                     <h2 class="postTitle"><?PHP the_title(); ?></h2>
                     <img class="singleMainImg" src="<?php the_post_thumbnail(); ?></img>
                     <p class="postinfo">Created on <?php the_time('F j, Y ')?>  at  <?php the_time('g:i a') ?>. <?php echo getPostViews(get_the_ID()); ?></p>

                     <?php the_content(); ?>
          </article>
          <?php setPostViews(get_the_ID()); ?>
    <?php endwhile;

  else:
    echo '<p> No Content</p>';
  endif;

get_footer();
 ?>

la première chose étrange est:

<img class="singleMainImg" src="<?php the_post_thumbnail(); ?></img>

Comme vous pouvez le constater, je n'ai pas les guillemets fermants, ni l'un ni l'autre ">" après la clôture de l'appel php.

Cela fonctionne de cette façon et montre ce que je veux presque (je peux manipuler img par la classe que j’ai assignée. Le problème n’est pas de savoir comment le code apparaît normalement sans ces deux éléments de fermeture dans la balise img.

Le problème que j'ai lorsque j'ajoute les guillemets fermants et> dans la balise d'image, je les ai sur la page réelle tels qu'ils sont et, en plus, à la ligne suivante après l'img.

Aussi, lorsque j’essaie d’ajouter certaines des tailles d’image prédéfinies dans mon fichier functions.php, en tant que paramètre de la

<img class="singleMainImg" src="<?php the_post_thumbnail('predefImageSize'); ?></img>

il ne tire aucune image du tout

Une idée ou une explication ou une solution pour expliquer pourquoi j'ai ce problème?

Sincères amitiés

1
Go Mo

La fonction the_post_thumbnail affiche la vignette de publication, à savoir la balise <img>. Vous n'avez pas besoin d'utiliser la balise <img> lorsque vous utilisez cette fonction.

Essayez ce code:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<article class="post">
     <h2 class="postTitle"><?PHP the_title(); ?></h2>
     <?php the_post_thumbnail( 'predefImageSize', ['class' => 'singleMainImg', 'title' => 'Feature image'] ); ?>
     <p class="postinfo">Created on <?php the_time('F j, Y ')?>  at  <?php the_time('g:i a') ?>. <?php echo getPostViews(get_the_ID()); ?></p>
     <?php the_content(); ?>
</article>

<?php setPostViews(get_the_ID()); ?>

<?php endwhile;

else: echo '<p> No Content</p>';   endif;

get_footer();

Code modifié:

<?php the_post_thumbnail( 'predefImageSize', ['class' => 'singleMainImg', 'title' => 'Feature Image'] ); ?>

Utilisation des clés et des valeurs du tableau pour renseigner différents attributs. Vous pouvez l'utiliser pour ajouter des classes à la miniature de publication.

Source : Documentation sur the_post_thumbnail sur developer.wordpress.org

2
Kashif Rafique