2

我知道你们会说这可能与PHP get index of last insert item in array重复

但我已经尝试过但没有成功让我的功能正常工作,我正试图找出原因。

我有一个功能可以从 Wordpress 帖子的内容中获取缩略图附件。

该代码适用于只有一个图像的帖子,但如果帖子中有多个图像,它将正确显示第一张图像array,但我不知道为什么它会反向存储图像。意味着最后存储的帖子的第一张图片和最后存储的第一张图片。我猜这可能就是mediaWordpress 的功能。

无论如何,我只需要从函数中获取最后插入的数据,即使它有一个或多个图像存储在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 }

}
4

3 回答 3

2

更改:
$thumbnail=wp_get_attachment_image_src($image->ID, $size);
至:
$thumbnail[] = wp_get_attachment_image_src($image->ID, $size);

不要忘记$thumbnail = array()在 for-each 之外声明。

然后你可以使用(首选):

echo end($thumbnail);

或类似的东西:

echo $thumbnail[count($thumbnail)-1];

如果您不想获得“最后一个”附加值。
或者您可以使用[0]orfirst()来获取第一个值


您可以在此处添加它(例如):

$thumb = get_post_meta($postid, "thumb", TRUE); 
$thumbnail = array(); //<<<
if ($thumb != null or $thumb != '') {
于 2012-05-03T13:44:50.933 回答
1

您正在将 $thumbnail 作为数组访问,但您正在覆盖 foreach() 中的变量,就好像它是一个字符串一样。

改变:

$thumbnail=wp_get_attachment_image_src($image->ID, $size);

 $thumbnail[]=wp_get_attachment_image_src($image->ID, $size); 

使它成为一个数组,那么你的其余代码应该可以工作

于 2012-05-03T13:43:59.687 回答
0

我的解决方案有一个更简单的方法,这里是我们如何从数组中获取最后一个。

只需将其添加到数组区域即可。

'orderby' => 'menu_order',
'order' => 'ASC', //If reverse use DESC
于 2012-05-04T20:17:23.123 回答