如何从WP_Post对象获取缩略图?

时间:2012-12-22 22:40:26

标签: php wordpress

我正试图在某种分类法下循环一堆页面。循环部分工作得很好,我得到了我需要的所有页面(很好地包装在WP_Post个对象中)。

然而,现在我面临着另一种问题。我想在编辑器中包含页面的缩略图。我尝试了getthethumbnailfeaturedimage_-,I的任意组合可以想到,但没有用。

WP_Post对象相当新, documentation is lacking

任何人都可以阐明这个谜团吗?我的目标是最终展示一堆<figure>元素,包含图像,标题和每个对象的简短描述。

3 个答案:

答案 0 :(得分:8)

以下只是短代码形式的概念证明。它会转储包含Featured Image

所有帖子的代码块

功能参考:has_post_thumbnailget_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;
}

前端的结果:

  

var dump

有精选图片的帖子:

  

enter image description here

答案 1 :(得分:1)

不确定您想要什么,但如果您想要获取某个页面的所有图像,那么您可以使用

$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);

您可以将此代码粘贴到循环中,如果您提供适当的page_id parent,那么您将在$images中将所有图像作为数组获取并运行循环

了解更多at Codex

更新

要获得特色图片,您可以使用

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

了解更多at Codex

答案 2 :(得分:0)

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

不幸的是,WP_Post方法的命名非常糟糕。与Post交互的大多数方法都需要添加一些'_'和'post'。