从Wordpress媒体库中获取单个特定图像

时间:2013-12-18 17:15:32

标签: php html wordpress image

我已将图片上传到Wordpress媒体库。

据我所知,我可以查看我的图片然后获取该特定图片的网址,然后使用img html标记在页面上显示此内容。

然而,这不会获得图片的alttitlecaptiondescription

img未附加到帖子或页面字段,因此我假设您无法使用“获取附件”功能等。

我想使用函数而不是写出静态img html代码的原因是,它们被更好地缓存,更容易维护,图像的所有数据都在媒体库中更新而不是编辑对最终用户不了解的HTML代码。

提前谢谢。

4 个答案:

答案 0 :(得分:18)

我认为你有附件ID?您是否尝试过使用附加功能?

来自codex:

  

请注意,媒体项目本身也是“帖子”,可以   通过WordPress模板层次结构显示。主题可以   利用它来循环媒体项目或创建画廊。

以下功能可以帮助您入门:

您可以使用:wp_get_attachment_image_src()

检索图像src
$img= wp_get_attachment_image_src($attachmentID, $imageSizeName); 

您可以使用get_post_field()

获取图片标题
get_post_field('post_excerpt', $attachmentID)

您可以使用:get_post_meta()

获取alt标记
get_post_meta($attachmentID, '_wp_attachment_image_alt', true);

答案 1 :(得分:7)

首先获取图片

function get_images_from_media_library() {
    $args = array(
        'post_type' => 'attachment',
        'post_mime_type' =>'image',
        'post_status' => 'inherit',
        'posts_per_page' => 5,
        'orderby' => 'rand'
    );
    $query_images = new WP_Query( $args );
    $images = array();
    foreach ( $query_images->posts as $image) {
        $images[]= $image->guid;
    }
    return $images;
}

并显示图片

function display_images_from_media_library() {

    $imgs = get_images_from_media_library();
    $html = '<div id="media-gallery">';

    foreach($imgs as $img) {

        $html .= '<img src="' . $img . '" alt="" />';

    }

    $html .= '</div>';

    return $html;

}

并使用php fire event

<?php echo display_images_from_media_library(); ?>

或使用此功能

<?php

if ( $attachments = get_children( array(
'post_type' => 'attachment',
'post_mime_type'=>'image',
'numberposts' => 1,
'post_status' => null,
'post_parent' => $post->ID
)));
foreach ($attachments as $attachment) {
echo wp_get_attachment_link( $attachment->ID, '' , true, false, 'Link to image attachment' );
}

?>

答案 2 :(得分:3)

请尝试以下代码:

<?php
      $attachmentID = 1875;
      $imageSizeName = "thumbnail";
      $img = wp_get_attachment_image_src($attachmentID, $imageSizeName);
      //print_r($img);
?>

<img src="<?php echo $img[0]; ?>" alt="image">

答案 3 :(得分:0)

这么多复杂的问题,我认为错误的答案很简单:

<?php
$url_to_my_attachment = "http://example.com/wp-content/uploads/image.png";

$attachment_id = attachment_url_to_postid($url_to_my_attachment);

print wp_get_attachment_image($attachment_id);

有关更多信息,请查看wp_get_attachment_image

注意:这将呈现一个“响应图像”,其中alt属性包含附件的替代数据。因此,此答案不能完全满足OP的要求,OP还要求包括titledescriptioncaption字段。有关如何包括这些其他字段的信息,请参阅接受的答案或其他答案。