0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【wordpress】アイキャッチ画像の詳細情報を取得する

Last updated at Posted at 2018-06-30

wordpressはwp_queryなどでパラメータがわかりやすい形で出てくれます!
参照:公式codex

ただ、アイキャッチを取得する方法については一発で取得する方法があまりなかったので、関数化してみました。
テーマ下のfunctions.phpに以下を記述します。

php5.functions.php

function get_featured_image_meta($post_id){
    $image_id = get_post_thumbnail_id($post_id);

    //wp_get_attachment_image_src=添付された画像の"url"、"width"、"height","真偽値"を配列として返す関数
    $image_values = wp_get_attachment_image_src($image_id,$size,false);

    //代替テキストとか説明とか
    $alt = get_post_meta($image_id, '_wp_attachment_image_alt', true);
    $description = get_post($image_id)->post_content;

    //無理やりだけど配列でないものは配列に
    $values = array_merge(array($image_id),$image_values,array($alt),array($description));

    //$valuesのキーに名前をつける
    $keys = array('id','url','width','height','bool','alt','description');
    //キーと配列をがっちゃんこ
    $image_data = array_combine($keys, $values);
    return $image_data;
}

php.single.php

var_dump($image_data);
//記事ページでのdump結果
//Applications/MAMP/htdocs/wordpress/wp-content/themes/amadeus/single.php:
array (size=6)
  'id' => string '6' (length=1)
  'url' => string 'http://localhost/wordpress/wp-content/uploads/2017/12/coffee.jpg' (length=69)
  'width' => int 2000
  'height' => int 1200
  'bool' => false//初期値
  'alt' => string '美味しいコーヒー' (length=24)
  'description' => string 'コーヒーですね' (length=21)

var_dump($image_data);すると、画像の必要情報がすべて配列で出力されるし、
$image_data['url']みたいな形でデータを取得できると
テンプレート側でなんのデータなのか理解しやすいかなと思います。

なんかもっときれいな書き方あると思うのでぜひ教えていただきたいです:worried:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?