【wordpress】個別記事ページでアイキャッチ画像に元画像へのリンク張るには?

php

まぁwordpress最近全く弄ってません。なぜなら最近は、すばらしいテーマがあるし、制作からは離れてきてるわけで。ただこうしたい!って時はやっぱ自分で調べるしかなくて、勉強にもなるからいいなぁと。

で、今回はよくサムネイル画像としてアイキャッチ画像を利用するこもありますが、個別記事ページでのアイキャッチ画像表示させて元画像へのリンクを設置しようとしたのですが、分からず調べました。

全体のコード

今回、検索した結果いくつかの記事を参考にさせていただきましたが、やり方は同じだったのでそれを参考にしつつそれぞれのコードを調べてみました。


$files = get_post_meta($post->ID, '_thumbnail_id', true);
$file = wp_get_attachment_url($files);

if ( has_post_thumbnail()):
 ?>



	

調べてみると上記の方法でアイキャッチ画像に元画像へのリンクを設置することができるようですが、順を追って調べてみた。

get_post_meta

まずはこの関数。「特定の投稿の特定のキーからカスタムフィールドの値を取得します」と公式サイトには書かれています。get_post_meta には各パラメーターがあります。

$post_id 投稿ID
$key カスタムフィールド名
$single 単一のカスタムフィールドの値を取得する場合はtrue、複数のカスタムフィールドの値を取得する場合はfalseを指定。

第1引数の$post_id に関しては個別ページでの投稿IDが知りたいので「$post->ID」で知ることができます。

第2引数に関してはアイキャッチ画像を設定した場合に、データベース(Mysql)に登録されるのが、postmeta テーブル内の_thumbnail_id になるようです。こちらも古い記事ですが下記に参考サイトを載せておきます。

第3引数は、true か false で指定しますが、falseの場合だと返り値が配列になり、今回は1つの値のみでいいのでtrueを指定しています。

と上記のように指定すると、その投稿で指定したアイキャッチ画像のカスタムフィールドの値が取得できます。下記に参考サイトがあるので、見てみてください。

ちなみに、指定した記事や固定ページから、すべてのカスタムフィールドの情報を配列で取得したい場合は「get_post_custom」で取得できます。ここらへんは上記の参考サイトの関連する関数でたくさん出てくるので見てください。

wp_get_attachment_url

この関数ですが、下記の参考サイトにも書いてありますが「投稿情報(添付ファイル)のURLを取得する」という関数。

今回の例で言えば、最初のget_post_metaでアイキャッチ画像のカスタムフィールドの値を取得して、その値の引数に指定すると画像までのURLが返り値として取得できます。

clean_url

この関数ですが、有害なURLを無害化して不正な文字を排除し、危険な文字を除去ししたい時はこの関数を使ったほうがよいみたいです。

ただ調べた時は情報が古かったためいまでは「esc_url」の仕様を推奨しているので下記のようにしたほうがいいですね。




という感じで、駆け足で説明しましたが、先駆者のおかげで助かります。