Get_Child()返回所有附件,而不是仅返回附加到‘post_parent’的附件

时间:2012-11-28 作者:Dreamingof8a

我想从当前帖子的附件中随机抽取四幅图片,显示为“特色图片”。因此,我使用以下功能:

function fs_gallery_featured_thumbs( $post_id ) { 
    // DEBUG: validate parent post ID
    echo $post_id;
    // Query to get images for this post
    $query = array(
        \'post_parent\'       => $post_id,
        \'post_type\'         => \'attachment\',
        \'post_mime_type\'    => \'image\',
        \'order\'             => \'RAND\',
        \'exclude\'           => get_post_thumbnail_id( $post_id ) );

    $images = array_rand( get_children( $query ), 4);    
    // If images exist for this page
    if ( $images ) {
        echo \'<div class="featured-thumbs">\';
        $i = 1;
        foreach ( $images as $image ) {
            $imageAttributes = wp_get_attachment_image_src( $image, \'gallery-thumbnail-1x1\' );
            echo \'<a href="\'.get_permalink().\'" class="featured-thumb-link featured-thumb-link-\'.$i.\'"><img src="\'.$imageAttributes[0].\'" alt="\'.the_title_attribute(array(\'echo\'=>0)).\'" class="featured-thumb featured-thumb-\'.$i++.\'" width="152px" height="152px" /></a>\';
        }
        echo \'</div>\';
    }
}
唯一的参数是从循环内部通过the_ID() 并且实际上返回了正确的父帖子ID(我使用echo $post_id; 上述功能内部。

但是,由于某种原因images 包含媒体库中所有图像的四个随机项,而不仅仅是附加到当前帖子的图像。

我怎样才能真正只获得贴在帖子上的图片?当我使用[gallery] 在这篇文章中,显示了正确的图像。我想要的只是那个画廊里的四张随机图片。

有什么想法吗?

不确定这是否与此有关:所有其他(错误)图片所附的帖子在某个时候被删除了。这些图片仍然在媒体库中徘徊,但是它们“使用”的帖子的帖子ID(这里不确定正确的英语术语,我的WP是德语)与我的不同post_parent.

Thx。

1 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

我所做的:在我用来在标准循环中显示帖子的模板中,我调用了上述函数:fs_gallery_featured_thumbs( $post->ID ) (最初我使用the_ID() 而不是$post->ID 这给我带来了麻烦。我想是因为the_ID() 实际上与身份相符,rihgt?)。

确切地问题不在于函数本身,而在于传递给它的参数。因为the_ID 回显而不是返回其值,实际函数被传递NULL, 导致查询所有帖子的附件。

解决方案:

通过$post->ID (在以下情况下$post 全球化)通过get_the_ID() (在回路内部)

结束

相关推荐