获取特定大小的帖子附件

时间:2012-10-23 作者:wes

有没有一种好方法可以知道帖子是否有特定大小的图片附件?我正在尝试随机获取5篇文章,但我只希望结果包含(自定义)大小为“extra\\u large”的图像附件。

我正在尝试:

$images = get_posts( array(
  \'post_type\' => \'attachment\',
  \'orderby\' => \'rand\',
  \'posts_per_page\' => -1,
) );
foreach ($images as $img) :
  $image = wp_get_attachment_image_src( $img->ID, \'extra_large\' );
  if ( !empty($image) )
    $carousel[] = array($img->post_parent, $image);
endforeach;
。。。但我并不特别喜欢这样,因为我必须抓取每一张图像,然后循环浏览它们,看看是否有超大版本。我只使用$carousel[]中的前5项,但由于我的数据集非常大,因此有许多不需要的处理。此外,我还必须再打一个电话,从ID中获取父对象。

有没有更优雅的方法?

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

图像附件类型存储在_wp_attachment_metadata 元键。数据已序列化,因此无法对其进行筛选。但你可以用meta_query 在您的查询中:

$images = get_posts( array(
  \'post_type\' => \'attachment\',
  \'orderby\' => \'rand\',
  \'posts_per_page\' => -1,
  \'meta_query\' => array(
        array(
            \'key\' => \'_wp_attachment_metadata\',
            \'value\' => \'extra_large\',
            \'compare\' => \'LIKE\'
        )
    )
) );

foreach ($images as $img) :
  $image = wp_get_attachment_image_src( $img->ID, \'extra_large\' );
  if ( !empty($image) )
    $carousel[] = array($img->post_parent, $image);
endforeach;
这将更有效率——因为它应该只检索具有“extra\\u large”版本的附件。

Alternative Option:将图像附加到帖子上,然后使用post_parent 在您的查询中,如此问题的答案所示:Get all image from single page

结束

相关推荐

images within style sheet

我希望有人能在这方面帮助我,因为这已经开始让我抓狂了。我已经搜索了好几个小时,想找到一种在我的样式表中放置图像路径的方法,但一直没有找到。路径不能是绝对路径或“主题相关”路径。解决问题的唯一方法是在html文件中添加以下内容:<style type=\"text/css\"> #menu .menu-drop .menu-label { background: url(<?php echo get_template_directory_uri().