你可以用两种方法中的一种来做。
$attachments = get_posts(array(
\'post_type\' => \'attachment\',
\'numberposts\' => -1,
\'post_status\' => null,
\'post_parent\' => get_the_ID(),
\'order\' => \'ASC\',
\'orderby\' => \'id\',
));
然后操纵数组以删除重复项。
另一种选择是应用内容过滤器,并使用regex查找和获取内容中的所有img标记。
据我所知,当您在可视化编辑器中添加图像时,wp会将其添加为后期附件,因此您不应该通过第一种方法得到重复的图像。至于按它们出现的顺序抓取,附件是按顺序添加的,因此按ID抓取列表应该按照它们添加到帖子的顺序提供列表,但不一定按照它们在标记中的出现顺序。为此,您肯定必须使用第二种使用内容过滤器的方法。
不过,我个人并不喜欢使用内容过滤器来实现这一点,因为根据添加的所有标记,可能很难编写适当的正则表达式来获取IMG。
对于正则表达式,如下所示:
preg_match(\'#(<img.*?>)#\', $content, $results);
可能有用。这将把结果转储到$results变量中,作为您可以使用的数组。