web-dev-qa-db-ja.com

Wp_attachment_metadataのメタ値を取得する方法

私は自分のやり方でwp_attachment_metadataを手に入れたいです。サイズ(サムネイル、大、中、小)を分けたい。データベースのメタ値は次のようになります。

a:5:{s:5:"width";i:660;s:6:"height";i:320;s:4:"file";s:39:"2013/07/debut 
-busana-muslim-new-yor.jpg";s:5:"sizes";a:2:{s:9:"thumbnail";a:4:{s:4:"f 
ile";s:39:"debut-busana-muslim-new-yor-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:39:"debut-busana-muslim-new-yor-300x145.jpg";s:5:"width";i:30 
0;s:6:"height";i:145;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_met 
a";a:10:{s:8:"aperture";i:0;s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7: 
"caption";s:0:"";s:17:"created_timestamp";i:0;s:9:"copyright";s:0:"";s:1 
2:"focal_length";i:0;s:3:"iso";i:0;s:13:"shutter_speed";i:0;s:5:"title"; 
s:0:"";}} 

さて、私は立ち往生しています。その配列を分離する方法がわかりません。画像のサイズとURLを取得するためにその配列を分離する方法は誰でも知っています。

1
odanicola

2つの方法があります。

  1. get_post_meta()

    $attachment_meta = get_post_meta( $post->ID, '_wp_attachment_meta', true );
    

    array()を返します。

    $width = $attachment_meta['width'];
    

    この場合、3番目のパラメータとしてのtrueは特に重要です。クエリされるメタデータはserialized配列なのでです。それをsingleとして返す必要があります。そうでない場合は、配列の最初の項目が直列化された配列になることを除いて、配列を返すことになります。乱雑です。 trueを渡すだけで、シリアル化されていない配列が返されます。

  2. wp_get_attachment_metadata()

    この関数は上記のget_post_meta()呼び出しの一種のラッパーです。

    $attachment_meta = wp_get_attachment_metadata( $post->ID );
    

どちらの場合も、$postattachmentであり、添付ファイルのアップロード先の親投稿ではありません。

2
Chip Bennett