WordPress获取附件图像标题

7
我试图按照这里提到的方法获取附件元数据的标题值,但是没有得到任何输出。其他的元数据数组,如[created_timestamp]或[iso]能够返回它们的值。
$img_meta = wp_get_attachment_metadata( $id );
echo $img_meta[image_meta][caption];

这个问题发生在[caption]和[title]中。非常感谢您的帮助。

那是来自图片的图像元数据,而不是来自WordPress - 所以看起来当拍摄这些图片时并没有应用该元数据。实际上,这与您链接到的Codex页面上的示例相同。 - Simon Pollard
@SimonPollard 当然,我已经输入了这些用于使用的图像的值。 - user1556571
@IhabAbdel-Rahim,你在哪里输入这些值的? - Simon Pollard
@PeterM,正如我所提到的,即使使用了具有这些值的图像,print_r($img_meta)也会返回标题和说明为空的值。 - user1556571
[focal_length] => 0 [iso] => 0 是我无法更改的内容,但标题和说明可以在WordPress媒体库中输入或修改。 - user1556571
显示剩余2条评论
3个回答

14

你想从wp_get_attachment_metadata获取的标题和说明并不是你在WordPress中添加的标题和说明,而是来自实际图像本身的元数据。要获取WordPress数据,请使用类似以下内容的代码(假设$id是您的图像ID):

$image = get_post($id);
$image_title = $image->post_title;
$image_caption = $image->post_excerpt;

1
你能分享一下相关的参考页面吗? - user1556571
1
请参考此链接:https://wordpress.org/support/topic/get-title-alt-or-caption-from-media-library-and-insert-into-theme 来查看相关的编程内容。重要的是要注意,wp_get_attachment_metadata并不能获取你所需要的内容,虽然我能理解为什么会使用它,但名称确实很令人困惑。 - Simon Pollard
该解决方案未提供所请求的值。 - user1556571
1
我已经更新了我的答案,并测试过了。这应该可以工作。 - Simon Pollard
1
很高兴听到这个消息 @IhabAbdel-Rahim :) - Simon Pollard
1
在WordPress 4.8.1上运行良好。 - Gendrith

8

你可以通过传递 $post 来获取特定的值。 - Simon Pollard

0
将以下代码放入您的functions.php文件中:
function show_caption_image($type='title'){
  global $post;
    $args = array( 'post_type' => 'attachment', 'orderby' => 'menu_order', 'order' => 'ASC', 'post_mime_type' => 'image' ,'post_status' => null, 'numberposts' => null, 'post_parent' => $post->ID );

    $attachments = get_posts($args);
    if ($attachments) {
        foreach ( $attachments as $attachment ) {
      $alt = get_post_meta($attachment->ID, '_wp_attachment_image_alt', true);
      $image_title = $attachment->post_title;
      $caption = $attachment->post_excerpt;
      $description = $image->post_content;
    }
  }  
  return $type == 'title' ? $image_title : $caption.$description;
}

接下来,在您的主题中的图像下方,或者您喜欢放置的任何位置,通常在 single.php 文件中:

<?php if ( has_post_thumbnail() ) : 
        ?>
      <span class="image main"><img src="<?php echo get_the_post_thumbnail_url()?>" alt="<?php echo get_the_title()?>" /><i><?php echo show_caption_image();?></i></span>
      <?php endif; ?> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接