我知道你们会说这可能与 PHP 重复 获取数组中最后插入项目的索引
但是我已经尝试过并且没有成功让我的功能工作,我试图弄清楚为什么。
我有一个功能,可以从Wordpress帖子的内容中获取缩略图附件。
该代码适用于只有一个图像的帖子,但如果帖子中有多个图像,它将正确显示array
中的第一个图像,但我不知道为什么它会反向存储图像。表示最后存储的帖子的第一张图像和最后存储的最后一个图像。我想这可能是Wordpress的media
功能的工作方式。
无论如何,我只需要从函数中获取最后插入的数据,即使它有一个或多个图像存储在array
// Get Image Attachments
function sa_get_image($postid=0, $size='thumbnail') {
if ($postid<1)
$postid = get_the_ID();
$thumb = get_post_meta($postid, "thumb", TRUE);
if ($thumb != null or $thumb != '') {
echo $thumb;
}
elseif ($images = get_children(array(
'post_parent' => $postid,
'post_type' => 'attachment',
'numberposts' => '1',
'post_mime_type' => 'image', )))
foreach($images as $image) {
$thumbnail=wp_get_attachment_image_src($image->ID, $size);
?>
<?php echo $thumbnail[0]; ?> // here is the problem where the image display.
<?php }
}
更改:$thumbnail=wp_get_attachment_image_src($image->ID, $size);
自:
$thumbnail[] = wp_get_attachment_image_src($image->ID, $size);
不要忘记在 for-each 之外声明$thumbnail = array()
。
然后您可以使用(首选):
echo end($thumbnail);
或类似的东西:
echo $thumbnail[count($thumbnail)-1];
如果您不想获取"最后一个"附加值。
或者您可以使用[0]
或first()
来获取第一个值
您可以在此处添加它(例如):
$thumb = get_post_meta($postid, "thumb", TRUE);
$thumbnail = array(); //<<<
if ($thumb != null or $thumb != '') {
您正在以数组的形式访问$thumbnail,但您正在覆盖 foreach() 中的变量,就好像它是一个字符串一样。
改变:
$thumbnail=wp_get_attachment_image_src($image->ID, $size);
自
$thumbnail[]=wp_get_attachment_image_src($image->ID, $size);
要使其成为数组,那么其余代码应该可以工作
啊
我的解决方案有一种更简单的方法,这是我们从数组中获取最后一个的方法。
只需将其添加到数组区域即可。
'orderby' => 'menu_order',
'order' => 'ASC', //If reverse use DESC