我正在使用WPQuery
和get_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\');
}
我正在查询当前页面的附件图像,如果没有指定给当前页面的图像,我将查询父页面的图像。此外,我正在为大图像做一个额外的过滤器。
但是,如果当前页面只有“小”图像,我想知道是否可以查询父页面的图像。
所以本质上,如果当前帖子有图片,我只想获取当前帖子的“大”图片,如果当前帖子没有图片,我只想获取父页面的“大”图片。
有什么办法吗!
最合适的回答,由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 );