¿Cómo puedo buscar una miniatura en WordPress?

3 minutos de lectura

avatar de usuario
jorame

¿Cómo puedo verificar si una publicación tiene una miniatura y si hace algo? Si no hace otra cosa. Esto es lo que tengo:

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

                <?php if ( has_post_thumbnail() ) { ?>
                        <a href="https://stackoverflow.com/questions/9305040/<?php the_permalink(); ?>"><?php the_title(); ?></a>
                <?php 
                }else{ 
                ?>
                    <?php the_post_thumbnail(); ?> 
                <?php
                } 
                ?>  

            <?php endwhile; ?>

        <?php endif; ?>

Cualquier ayuda será apreciada.

  • No aparece nada cuando lo ejecuto. Probé cosas diferentes como the_thumbnail pero aún no aparece nada

    – jorame

    16 de febrero de 2012 a las 3:23

  • ¿Estás seguro de que está en el bucle?

    – Dakshinamurthy Karra

    16 de febrero de 2012 a las 4:28

  • Publique todo el conjunto de códigos con el bucle.

    – Vasanthan.RP

    16 de febrero de 2012 a las 5:16

  • Ok, acabo de publicar el código con el ciclo también.

    – jorame

    16 de febrero de 2012 a las 21:28

avatar de usuario
Evans

Ya tienes esto, en la linea

if ( has_post_thumbnail() )

está comprobando si la publicación tiene una miniatura, el problema es que puso un código incorrecto en la declaración else, tiene que poner algo como:

  <?php if ( has_post_thumbnail() ) { ?>
      <a href="https://stackoverflow.com/questions/9305040/<?php the_permalink(); ?>"><?php the_title(); ?></a>
      <?php the_post_thumbnail(); ?> 
      HAVE THUMBNAIL DO SOMETHING
  <?php 
      }else{ 
  ?>
      DOESN'T HAVE THUMBNAIL : DO SOMETHING ELSE
      <?php
  } 
  ?>  

Prueba con esta línea de códigos:

    <?php if(has_post_thumbnail())
        { 
        ?>
            <img src="https://stackoverflow.com/questions/9305040/<?php the_post_thumbnail_url(); ?>" id="contextual" class="contextual" alt="" />

        <?php 
        }
else{       
        ?>
        <img src="<?php echo get_template_directory_uri(); ?>/design/images/i-default.jpg" id="contextual" class="contextual" alt="" />
<?php } ?>

Para vincular las miniaturas de la publicación al enlace permanente de la publicación en un ciclo específico, use lo siguiente dentro de los archivos de plantilla de su tema:

<?php if ( has_post_thumbnail() ) : ?>
    <a href="https://stackoverflow.com/questions/9305040/<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
        <?php the_post_thumbnail(); ?>
    </a>
<?php endif; ?>

primero VERIFIQUE su archivo functions.php para esto

if (function_exists('add_theme_support')) {
  add_theme_support('post-thumbnails');
}

si no está allí, cópielo y péguelo en su archivo.

En segundo lugar, agregue esto a su functions.php, esto le permite devolver el origen de la imagen, y no solo imprimir la etiqueta img completa

function get_the_post_thumbnail_url( $post_id = NULL ) {
    global $id;
    $post_id = ( NULL === $post_id ) ? $id : $post_id;
    $src = wp_get_attachment_image_src(get_post_thumbnail_id($post_id), 'full');
    $src = $src[0];
    return $src;
}

Luego, en su página de plantilla, cambie su código a algo como:
esto fue usado como imagen de fondo

<?php if ( has_post_thumbnail() ) { ?>
    <div id="slider" style="background-image:url(<?php echo get_the_post_thumbnail_url($post->ID, 'large'); ?>); background-position: center center;">  
    </div>                
<?php 
}else{ 
?>
    <img src="https://stackoverflow.com/questions/9305040/<?php bloginfo("template_directory');?>/images/blank.jpg" alt="" /> 
<?php
} 
?> 

esto debería producir un div con una imagen de fondo aplicada,

Si desea que se imprima el código de la etiqueta Full img, simplemente use uno de los siguientes.

if (has_post_thumbnail()) { 
?>
    <?php the_post_thumbnail();            // just the image        ?>
    <?php the_post_thumbnail('thumbnail'); // just the thumbnail    ?>
    <?php the_post_thumbnail('medium');    // just the Medium Image ?>
    <?php the_post_thumbnail('large');     // just the Medium Image ?>
    <?php 
    // adding a 200x200 height and width along with a class to it.
        the_post_thumbnail(array( 200,200 ), array( 'class' => 'alignleft' )); 
    ?>
    <?php 
    // Adding a few classes to the medium image
        the_post_thumbnail('medium', array('class' => 'alignleft another_class')); 
    ?>

<?php
}

marty..

¿Ha sido útil esta solución?