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

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

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

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

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

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

提前谢谢你。

【问题讨论】:

    标签: php html wordpress image


    【解决方案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]; ?>" alt="image">
      

      【讨论】:

        【解决方案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 . '" alt="" />';
        
            }
        
            $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。
          猜你喜欢
          • 1970-01-01
          • 2015-12-29
          • 1970-01-01
          • 1970-01-01
          • 2017-05-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-22
          相关资源
          最近更新 更多