web-dev-qa-db-fra.com

Has_post_thumbnail () est-il nécessaire d'afficher l'image sélectionnée?

J'ai de la difficulté à trouver de la documentation sur ce que the_post_thumbnail() renvoie s'il n'y a pas d'image sélectionnée.

Si je n'ai besoin d'aucun code HTML supplémentaire autour de l'image présentée, dois-je quand même utiliser has_post_thumbnail()?

Par exemple, est-ce redondant:

if ( has_post_thumbnail() ) {
    the_post_thumbnail();
}
2
PBwebD

Ce type de détail ne fait probablement pas partie de la documentation officielle. La meilleure chose à faire est donc de regarder directement le code source.

La voici avec les parties non pertinentes enlevées:

function the_post_thumbnail( $size = 'post-thumbnail', $attr = '' ) {
    echo get_the_post_thumbnail( null, $size, $attr );
}

/**
 * Retrieve the post thumbnail.
 * @return string The post thumbnail image tag.
 */
function get_the_post_thumbnail( $post = null, $size = 'post-thumbnail', $attr = '' ) {
    if ( ! $post ) {
        return '';
    }

    $post_thumbnail_id = get_post_thumbnail_id( $post );

    if ( $post_thumbnail_id ) {
        //...
    } else {
        $html = '';
    }

    /**
     * Filters the post thumbnail HTML.
     * @param string       $html              The post thumbnail HTML.
     */
    return apply_filters( 'post_thumbnail_html', $html, $post->ID, $post_thumbnail_id, $size, $attr );
}

Donc, vous pouvez voir que the_post_thumbnail() fait simplement écho à tout ce qui est retourné par get_the_post_thumbnail(). Le docblock pour get_the_post_thumbnail() déclare qu'il retourne une chaîne et correspond au code.

Ainsi, si une image sélectionnée n'est pas définie, elle devrait simplement renvoyer une chaîne vide, qui sera ensuite répercutée, ce qui n'aura aucun effet sur le balisage rendu.

Si un autre plugin filtre la sortie de post_thumbnail_html, il pourrait bien sûr renvoyer autre chose, même si une miniature n'est pas définie.

Ainsi, dans votre cas particulier, encapsuler l'appel dans has_post_thumbnail() serait simplement une précaution contre les effets secondaires non souhaités, mais il semble peu probable que vous rencontriez des problèmes si vous le laissez pas.

Dans vous vouliez ajouter un balisage supplémentaire autour de l'image, alors ce serait nécessaire (accessoires @swisspidy). par exemple.:

<?php if ( has_post_thumbnail() ) : ?>
    <header class="entry-header">
        <?php the_post_thumbnail(); ?>
        <p>Lorum ipsum blah blah blah</p>
    </header>
<?php endif; ?>
6
Ian Dunn