¿Cómo puedo obtener la miniatura de un objeto WP_Post?

3 minutos de lectura

avatar de usuario
fantasma de madara

Estoy tratando de recorrer un montón de páginas bajo una determinada taxonomía. La parte de bucle funciona muy bien y obtengo todas las páginas que necesito (bien envueltas en WP_Post objetos).

Sin embargo, ahora me enfrento a un tipo diferente de problema. Quiero incluir la miniatura de la página como se establece en el editor. He probado cualquier combinación de get, the, thumbnail, featured, image, _, -pude pensar, en vano.

los WP_Post objeto es bastante nuevo, y falta documentacion.

¿Alguien puede arrojar luz sobre este misterio? Mi objetivo es mostrar eventualmente un montón de <figure> elementos, que contienen una imagen, un título y una breve descripción de cada objeto.

avatar de usuario
brasofilo

La siguiente es solo una prueba de concepto en forma de shortcode. Vuelca un bloque de código con todas las publicaciones que tienen un Foto principal.

Referencia de la función: has_post_thumbnail, get_the_post_thumbnail

add_shortcode( 'all-post-thumbs', 'so_14007170_dump_post_thumbs' );

function so_14007170_dump_post_thumbs( $atts, $content ) 
{
    // Query
    $posts = get_posts( array(
        'post_type'    => 'post',
        'numberposts'  => -1,
        'post_status'  => 'publish'
    ) );

    // Build an array of post thumbnails
    $thumbs = array();
    foreach( $posts as $post)
    {
        if( has_post_thumbnail( $post->ID) )
            $thumbs[] = array( $post->post_title, htmlentities(get_the_post_thumbnail( $post->ID ) ) );
    }

    // Build output and return
    $echo = '<pre>'. print_r( $thumbs, true ) . '</pre>';
    return $echo;
}

Resultado en la interfaz:

volcado de var

Publicaciones con imagen destacada:

ingrese la descripción de la imagen aquí

  • ¡Ajá! ¡Esto es lo que estaba buscando! get_the_post_thumbnail acepta una identificación! (Realmente odio WordPress). ¡Gracias! +25!

    – El fantasma de Madara

    22 de diciembre de 2012 a las 23:26

  • @developerbmw, ¿qué comas? :PAGS

    – brasofilo

    15 de mayo de 2017 a las 3:11

  • @brasofilo mucho mejor 😀

    – desarrollador bmw

    17 de mayo de 2017 a las 3:47

avatar de usuario
el alfa

No estoy seguro de lo que quiere, pero si desea obtener todas las imágenes de una página determinada, puede usar

$parent="your page id";
$args=array(
    'post_parent' => $parent,
    'post_type' => 'attachment',
    'post_mime_type' => 'image',
    'orderby' => 'menu_order',
    'order' => 'ASC',
    'numberposts' => -1 
);
$images = get_children($args);

Puede pegar este código en su ciclo y si proporciona el apropiado page_id como parent entonces obtendrá todas las imágenes como una matriz en el $images y puede ejecutar un bucle.

Lee mas en el códice.

Actualizar:

Para obtener solo la imagen destacada, puede usar

echo get_the_post_thumbnail('page id here', 'thumbnail');

Lee mas en el códice.

  • ¿La “imagen destacada” que seleccioné se encuentra entre esas? Si es así, ¿es posible obtener solo ese?

    – El fantasma de Madara

    22 de diciembre de 2012 a las 23:18

  • ¿Quieres obtener solo la imagen destacada de la página?

    – El alfa

    22 de diciembre de 2012 a las 23:19

if ( have_posts() ) : while ( have_posts() ) : the_post();
    // stuff before thumbnail

    $thumbnail_args = array();

    // insert whatever thumbnail args you want

    echo get_the_post_thumbnail();

    // stuff after thumbnail

endwhile; else:

    echo "<h2>Sorry, nothing to see here.</h2>";
endif

Desafortunadamente, los métodos WP_Post se nombran muy mal. La mayoría de los métodos que interactúan con la publicación deben tener algún arreglo de ‘_’ y ‘publicación’ agregados a ellos.

  • (¿no?) afortunadamente, no estoy usando el bucle global, sino un bucle interno, generado por WP_Query. Gracias de cualquier manera 🙂

    – El fantasma de Madara

    22 de diciembre de 2012 a las 23:27

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad