web-dev-qa-db-fra.com

Comment afficher the_post_thumbnail si un article en a un ou comment afficher la première image d'un article?

Je voudrais créer une condition qui vérifie si un message a une vignette et s'il l'affiche, sinon affiche la première image d'un message.

J'ai essayé quelque chose comme ceci dans mon loop.php mais cela n'a pas semblé fonctionner:

<?php if (has_post_thumbnail()) { ?>
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(array(640,320)); ?></a>
<?php } else { ?>
<a href="<?php the_permalink(); ?>"><img src="<?php echo catch_that_image(); ?>" /></a>
<?php } ?>

Cela va dans mon fichier functions.php:

<?php
    function catch_that_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];

        // no image found display default image instead
        if(empty($first_img)){
             $first_img = get_bloginfo('template_url')."/images/no_image.gif";
        }
            return $first_img;
    }

    $imgURL = catch_that_image();
?>
3
Matt

Obtenir l'image fait ce dont vous avez besoin et mieux. Ce n'est pas écrasant avec beaucoup de fonctionnalités inutiles, et fait ce qu'il dit. Essayez-le pour voir s'il fait ce dont vous avez besoin.

Comment Get the Image plugin extrait-il les images?

  • Recherche une image par champ personnalisé (celui de votre choix).

  • Si aucune image n'est ajoutée par un champ personnalisé, recherchez une image à l'aide de the_post_thumbnail () (nouvelle fonctionnalité d'image de WP 2.9).

  • Si aucune image n'est trouvée, une image est jointe à votre message.

  • Si aucune image n'est jointe, il peut extraire une image de votre contenu de publication (désactivée par défaut).

  • Si aucune image n'est trouvée à ce stade, il s'agira par défaut d'une image que vous avez définie (non définie par défaut).

3
its_me

Cela devrait le faire, je l'utilise et c'est super facile et simple, il suffit de le coller dans votre functions.php:

function autoset_featured() {
    global $post;
    $already_has_thumb = has_post_thumbnail($post->ID);
    if (!$already_has_thumb) {
        $attached_image = get_children( 
            "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" 
        );
        if ($attached_image) {
            foreach ($attached_image as $attachment_id => $attachment) {
                set_post_thumbnail($post->ID, $attachment_id);// the size of the thumbnail is defined in a function above
            }
        }
    }
}  //end function

add_action('the_post', 'autoset_featured');
add_action('save_post', 'autoset_featured');
add_action('draft_to_publish', 'autoset_featured');
add_action('new_to_publish', 'autoset_featured');
add_action('pending_to_publish', 'autoset_featured');
add_action('future_to_publish', 'autoset_featured');
1
Sara