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

How can I get the thumbnail from a WP_Post object?

提问人:Madara's Ghost 提问时间:12/23/2012 最后编辑:Madara's Ghost 更新时间:5/15/2017 访问量:9371

问:

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

然而,现在我面临着另一种问题。我想包含编辑器中设置的页面缩略图。我尝试了我能想到的 、 、 的任意组合,但无济于事。getthethumbnailfeaturedimage_-

该对象相当新,并且缺少文档WP_Post

谁能解开这个谜团?我的目标是最终展示一堆元素,包含图像、标题和每个对象的简短描述。<figure>

PHP 的wordpress

评论


答:

1赞 The Alpha 12/23/2012 #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);

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

在食品法典委员会阅读更多内容。

更新:

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

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

在食品法典委员会阅读更多内容。

评论

0赞 Madara's Ghost 12/23/2012
我选择的“特色图片”是否在其中找到?如果是这样,有没有可能只得到那个?
0赞 The Alpha 12/23/2012
您只想获得页面的特色图片吗?
0赞 dyelawn 12/23/2012 #2
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' 的排列。

评论

0赞 Madara's Ghost 12/23/2012
(不?幸运的是,我没有使用全局循环,而是使用 WP_Query 生成的内部循环。无论如何,谢谢:)
8赞 brasofilo 12/23/2012 #3

以下只是以简码形式进行的概念证明。它会转储一个代码块,其中包含所有具有特色图片的帖子。

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

评论

3赞 Madara's Ghost 12/23/2012
啊哈!这就是我一直在找的! 接受 ID!(我真的很讨厌WordPress)。谢谢!+25!get_the_post_thumbnail
0赞 brasofilo 5/15/2017
@developerbmw,什么逗号?:P
0赞 brettwhiteman 5/17/2017
@brasofilo好得多:D