我知道你们会说这可能会复制到PHP get index of last inserted item in array
但是我已经尝试过但没有成功让我的功能发挥作用,而我正试图找出原因。
我有一个功能,可以从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 }
}
答案 0 :(得分:2)
变化:
$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 != '') {
答案 1 :(得分:1)
您正在访问$ thumbnail作为数组但是您正在覆盖foreach()中的变量,就像它是一个字符串一样。
变化:
$thumbnail=wp_get_attachment_image_src($image->ID, $size);
到
$thumbnail[]=wp_get_attachment_image_src($image->ID, $size);
使它成为一个数组,然后你的代码的其余部分应该工作
AH
答案 2 :(得分:0)
我的解决方案有一个更简单的方法,这就是我们如何从阵列中获取最后一个。
只需将其添加到数组区域即可。
'orderby' => 'menu_order',
'order' => 'ASC', //If reverse use DESC