如何在wp_attachment_metadata中获取元值

时间:2016-10-26 07:21:52

标签: arrays wordpress

希望以自己的方式获取wp_attachment_metadata。我想获取文件名:

a:5:{s:5:"width";i:500;s:6:"height";i:500;s:4:"file";s:25:"2016/08/sprite_1500ml.jpg";s:5:"sizes";a:5:{s:9:"thumbnail";a:4:{s:4:"file";s:25:"sprite_1500ml-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:6:"medium";a:4:{s:4:"file";s:25:"sprite_1500ml-300x300.jpg";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:14:"shop_thumbnail";a:4:{s:4:"file";s:25:"sprite_1500ml-180x180.jpg";s:5:"width";i:180;s:6:"height";i:180;s:9:"mime-type";s:10:"image/jpeg";}s:12:"shop_catalog";a:4:{s:4:"file";s:25:"sprite_1500ml-300x300.jpg";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:10:"image/jpeg";}s:11:"shop_single";a:4:{s:4:"file";s:25:"sprite_1500ml-400x400.jpg";s:5:"width";i:400;s:6:"height";i:400;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}

好吧,我被困住了。我不知道如何分离该数组。任何人都知道如何分离该数组,以便我可以获取文件名(url文件)。

我现在的代码:

$command = $_GET['command'];
switch ($command) {
    case 'list_product':

        $loop = new WP_Query( 
                array(
                        'post_type'    => 'product'
                    )
                ); 
        if( $loop->have_posts() ) :

            $data = array( "api_status" => 1, "api_message" => "success");
            $meta = array();
            while ( $loop->have_posts() ) : $loop->the_post();
                    $meta[] = array(
                        "id"            => get_the_ID(),
                        "post_name"     => get_the_title(),
                        "stock_status"  => get_post_meta( get_the_ID(), '_stock_status', true ),
                        "price"         => get_post_meta( get_the_ID(), '_price', true ),
                        "reguler_price" => get_post_meta( get_the_ID(), '_regular_price', true ),
                                                "image"         => get_post_meta( get_the__ID(), '_wp_attachment_metadata', true ),
                    );
            endwhile;
        endif;
        echo  json_encode($meta);
        break;

我的意思是当我使用时:

"image"         => get_post_meta( get_the__ID(), '_wp_attachment_metadata', true ),

我的结果没有显示任何内容

我的代码有什么改进,所以它可以像我想要的那样工作?

1 个答案:

答案 0 :(得分:0)

如果你想要一个图片网址,我会告诉你另一种方法。我想你想要一个特定帖子的帖子缩略图。

// First we get the image id
$post_thumbnail_id = get_post_thumbnail_id( get_the_ID() ); 

// Then we get the image data, we will get an array with some informations
$image = wp_get_attachment_image_src( $post_thumbnail_id, 'large' );

// the image url is the first index of this array
$image_url = $image[0];

在此示例中,您将获得large版本的图片网址。如果您想要更大的尺寸,只需将其更改为例如meidumfull。请阅读documentation of wp_get_attachment_image_src()了解详情。

此代码必须放在循环内。确保get_the_ID() 返回当前的POST ID 。确保POST 有一个帖子缩略图

如果您有附件(图片)的ID,基本上您可以获得图片网址。