如果当前页面附件小于…,则查询父页面的附件

时间:2012-08-22 作者:mathiregister

我正在使用WPQueryget_children($query_images_args) 从当前页面查询附件。如果当前页面没有指定附件,我将查询父页面的图像。

这是我想要的方式,但我还有一点额外的目标。我已经在论坛上问了一个类似的问题(使用相同的代码示例)。https://wordpress.stackexchange.com/questions/62624/only-get-attachments-that-are-associated-with-a-gallery然而,在这个问题上,我要求采用不同的方法来解决相同的问题。

$query_images_args = array(
        \'post_type\' => \'attachment\',
        \'post_mime_type\' =>\'image\',
        \'post_status\' => \'inherit\',
        \'posts_per_page\' => -1,
        \'post_parent\' => $post->ID
    );

    $attachments = get_children($query_images_args);

    if ( empty($attachments) ) {
        $query_images_args = array(
            \'post_type\' => \'attachment\',
            \'post_mime_type\' =>\'image\',
            \'post_status\' => \'inherit\',
            \'posts_per_page\' => -1,
            \'post_parent\' => $post->post_parent
        );
    }

    $query_images = new WP_Query( $query_images_args );
    $images = array();
    foreach ( $query_images->posts as $image) {
        $images[] = wp_get_attachment_image_src( $image->ID, \'large\');
    }
我正在查询当前页面的附件图像,如果没有指定给当前页面的图像,我将查询父页面的图像。此外,我正在为大图像做一个额外的过滤器。

但是,如果当前页面只有“小”图像,我想知道是否可以查询父页面的图像。

所以本质上,如果当前帖子有图片,我只想获取当前帖子的“大”图片,如果当前帖子没有图片,我只想获取父页面的“大”图片。

有什么办法吗!

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

我不太清楚您是如何定义当前页面是否只有“小”图像的。但我怀疑答案是正确的wp_get_attachment_image_src 函数,它不仅返回图像url,还返回宽度和高度。

假设您只对宽度超过300像素的图像感兴趣。首先,将其添加到函数中。php文件:

function return_my_big_images( $id ) {

    $query_images_args = array(
        \'post_type\' => \'attachment\',
        \'post_mime_type\' => \'image\',
        \'post_status\' => \'inherit\',
        \'posts_per_page\' => -1,
        \'post_parent\' => $id
    );

    $attachments = get_children( $query_images_args );

    $big_images = array();
    foreach( $attachments as $image ) {
        $image_src = wp_get_attachment_image_src( $image->ID, \'full\' );
        if ( $image_src[1] > 300 ) // $image_src[1] is where pixel width is stored
            $big_images[] = $image_src[0]; // $image_src[0] is its url
    }

    return $big_images;

}
然后,您可以添加以下内容,而不是上面的代码:

global $post;

// return all images bigger than 300px wide attached to current post
$big_images = return_my_big_images( $post->ID );

// if none, return images bigger than 300px wide attached to post parent
if ( empty( $big_images ) )
    $big_images = return_my_big_images( $post->post_parent );

结束

相关推荐

resize images not crop

正在寻找一种将上传的图像(wordpress上所有形式的图像上传)调整到精确尺寸的方法,但是not to crop. 我会悬赏回答这个问题,因为我相信这对很多人都有帮助。理想的解决方案必须是作为插件,并使用媒体设置页面(options-Media.php/Thumbnail,Medium和Large)上已经指定的图像尺寸我知道理想有时无法实现,所以最接近的答案将是公认的答案