web-dev-qa-db-fra.com

Comment récupérer une image d'un post et l'afficher avant un extrait d'un post?

Je personnalise un modèle WordPress et j'implémente le comportement suivant dans la visualisation des extraits sur ma page d'accueil:

Si un article contient des images (une ou plusieurs), affichez au début de la page d'accueil un aperçu de la première image de l'article, puis affichez l'extrait de l'article.

Pour le moment, j'ai le code suivant qui, dans une boucle WordPress, affiche les extraits de tous les articles de la page d'accueil:

<!-- .entry-summary -->
        <?php else : ?>
        <div class="entry-content">
            <?php the_excerpt(); ?>
            <?php wp_link_pages( array( 'before' => '<div class="page-link"><span>' . __( 'Pages:', 'admired' ) . '</span>', 'after' => '</div>' ) ); ?>
        </div>

Comme vous pouvez le voir, cet extrait de code montre l'extrait d'un article.

Est-il possible de trouver la première image de l'article, de l'insérer dans une variable et de l'afficher dans une plage (ou une autre balise HTML) avant la visualisation de l'extrait?

1
AndreaNobili

s'il s'agit de "l'image sélectionnée" de votre message, vous pouvez utiliser:

<?php 
// check if the post has a Post Thumbnail assigned to it.
if ( has_post_thumbnail() ) { the_post_thumbnail(); } 
?>

vérifier: la fonction the_post_thumbnail

sinon, si vous voulez obtenir la première image dans votre message, vous pouvez utiliser quelque chose comme ça:

function get_first_post_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];

  //Defines a default image
  if(empty($first_img)){ 
    $first_img = "/images/default.jpg";
  }
  return $first_img;
} 

Puis placez <?php echo get_first_post_image(); ?>

2
Tribalpixel