Establecer la miniatura de la entrada como fondo

25 mar 2016, 13:43:19
Vistas: 38.6K
Votos: 5

Tengo una página individual para mis productos donde se listan todos los productos. Así es como lo he logrado:

<ul class="produkte">
    <?php $args = array( 'post_type' => 'produkte', 'posts_per_page' => 30 );

    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();
        echo '<li class="produkt">';
        echo '<a href="' . get_permalink() . '">';
        echo '<div class="produkt-info">';
        the_title('<h3>', '</h3>');
        if (has_post_thumbnail()) {
            echo '<figure class="imgBox">';
           the_post_thumbnail('full', array('class' => 'img-resp') );
           echo "</figure>";
        }
        echo '</div>';
        echo '</a>';
        echo '</li>';
    endwhile; ?>
</ul>

Decidí que quiero establecer la miniatura de la entrada como imagen de fondo del elemento li.produkt. Cuando hago algo como esto:

echo '<li class="produkt" style="background: url('.the_post_thumbnail().')">';

La página genera un elemento de imagen encima del elemento li. ¿Qué estoy haciendo mal?

0
Todas las respuestas a la pregunta 5
0
12

El problema aquí es que the_post_thumbnail() no devuelve la URL de la imagen sino la etiqueta img.

Puedes usar este código

$url = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
echo '<li class="produkt" style="background: url('. $url.')">';
25 mar 2016 13:54:59
0

Ahora existe la función get_the_post_thumbnail_url proporcionada en WordPress.

Ejemplo de uso del codex:

$featured_img_url = get_the_post_thumbnail_url(get_the_ID(),'full');

https://developer.wordpress.org/reference/functions/get_the_post_thumbnail_url/

15 may 2018 23:26:13
1

Según el Codex de WordPress, la función the_post_thumbnail() Muestra la imagen destacada del post. https://developer.wordpress.org/reference/functions/the_post_thumbnail/ Pero esto devuelve toda la etiqueta de imagen y no solo el src, que es lo que necesitas en tu caso.

En su lugar, deberías usar la función wp_get_attachment_image_src() que Recupera una imagen para representar un adjunto. https://developer.wordpress.org/reference/functions/wp_get_attachment_image_src/

Así que te sugiero probar algo como esto:

//esto recupera la versión completa de la imagen
$image_data = wp_get_attachment_image_src( get_the_post_thumbnail( $post->ID ), 'full' );
$image_url = $image_data[0];
echo '<li class="produkt" style="background: url('. $image_url .')">';
25 mar 2016 14:08:14
Comentarios

Solo presta atención que tienes un paréntesis ")" de más al final de tu primera fila.

Simone Cabrino Simone Cabrino
29 mar 2017 17:22:47
0

Prueba usando background-size: cover, background-position: center y background-size: 300px 100px;

<?php
echo '<li class="produkt" style="background-image: url('<?php the_post_thumbnail_url(); ?>'); background-size: cover; background-position: center; background-repeat: no-repeat; background-size: 300px 100px;">';
?>
30 nov 2020 17:07:40
0

simplemente muestra la URL de la miniatura de la publicación:

<li class="produkt" style="background-image: url(<?php echo the_post_thumbnail_url(); ?>);">></li>

10 feb 2021 00:32:55