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

Posted

技术标签:

【中文标题】从 Wordpress 媒体库中获取单个特定图像【英文标题】:Get a single specific image from Wordpress Media Library 【发布时间】:2014-01-06 23:57:03 【问题描述】:

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

我知道我可以查看图像然后获取该特定图像的 URL,然后使用img html 标记在页面上显示它。

然而,这并没有得到图像的alttitlecaptiondescription

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

我想使用函数而不是写出静态的img html 代码的原因是,它们可以更好地缓存,并且更容易维护,因为图像的所有数据都在媒体库中更新,而不必编辑html 代码不适合最终用户。

提前谢谢你。

【问题讨论】:

【参考方案1】:

这么多复杂且在我看来是错误的答案,而答案非常直接:

<?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 属性包含附件的alt 数据。因此,这个答案并不能完全满足 OP 的要求,该要求还要求包括 titledescriptioncaption 字段。有关如何包含这些其他字段的信息,请参阅已接受的答案或其他答案。

【讨论】:

【参考方案2】:

请尝试以下代码:

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

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

【讨论】:

【参考方案3】:

先获取图片

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 . '"  />';

    

    $html .= '</div>';

    return $html;


并使用 php fire 事件

<?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' );


?>

【讨论】:

【参考方案4】:

我想你有一个附件 ID?您是否尝试过使用附件功能?

来自法典:

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

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

您可以使用以下方式检索图像 src:wp_get_attachment_image_src()

$img= wp_get_attachment_image_src($attachmentID, $imageSizeName); 

您可以使用以下方式获取图片标题:get_post_field()

get_post_field('post_excerpt', $attachmentID)

您可以使用以下方式获取 alt 标签:get_post_meta()

get_post_meta($attachmentID, '_wp_attachment_image_alt', true);

【讨论】:

但是您从哪里获得附件的实际 ID? 在媒体库中查看图片时,可以在浏览器栏的URL中看到附件ID。

以上是关于从 Wordpress 媒体库中获取单个特定图像的主要内容,如果未能解决你的问题,请参考以下文章

我需要从我的 wordpress 媒体库中删除重复的图像

如何在无头 wordpress 环境中确保图像请求的 CORS?

从单个帖子中获取 Wordpress 类别

获取所有媒体文件 wordpress 的功能是啥?

使用属性值为我的 wordpress 库中的每个图像添加自定义链接

更改 Wordpress 媒体图像 URL