見出し画像

【今更聞こう WordPress! 第5回「変数」編】 個人投資家のFIREへの旅路 第159 夜

本日は、WordPressのブログページ(sigle.php)のアイキャッチ画像の設定方法を解説します。


【functions.php】


まず、WordPressには、テーマという概念があり既存のテーマを使用したり、テーマを自作したりできます。

テーマを自作している場合には、アイキャッチ画像をテーマがサポートするか設定できます。デフォルトでは、サポートしない設定となります

つまり、管理画面から投稿をしても、アイキャッチ画像を設定する項目がない状態です。

これを設定できるようにする必要があります。

まずは、このファイルを作ります!

functions.php 

その中に、

<?php 
add_action('init', function(){
   add_theme_support('post-thumbnails');
});

こちら書きます。そうすると、投稿画面にアイキャッチ画像を設定する項目が追加されます。

<!POINT!>   functions.phpとは、WordPressの設定のカスタマイズ等を書くためのファイル。必ずこの名前にする必要あり。

管理画面→「投稿」で記事を編集するページにいくと・・・

スクリーンショット 2021-09-04 14.11.36

はい! 右下に「アイキャッチ画像」という項目が追加されます。

こちらから、画像を選択して登録ができます。

この画像の登録は、管理画面→メディア→ライブラリ→新規追加

で、追加できます。

このライブラリの保存いている画像は、WordPressで必要な場所に読み込むことができます。


【アイキャッチ画像を表示する】

<?php the_post_thumbnail(); ?>

このコードは、WordPress独自のテンプレートタグです。

さらに細かく編集する場合は、

<?php the_post_thumbnail(array(30,30)); ?> 

( ) の中に、array(30,30) を追加しました。

arrayは配列を意味しますが、ここでは、気にしなくてOK!

30 , 30という数字は、画像の縦横サイズです、ここの数字は自由に入れて、サイズを調整しましょう!


【アイキャッチ画像を必要な場所に貼る】

画像2

<? php 
    $id = get_post_thumbnail_id();
    $img = wp_get_attachment_image_src($id);
    ?>
    
    <header class ="header" style="background-image:url('<?php echo $img[0]; ?>') >
    
    

上のコードは、アイキャッチ画像を、ブログページのヘッダー部分にの、背景(background)に入れるコードです。

ライブラリの保存した画像には、自動でid番号が振られます。これを取り出して、wp_get_attachiment_image_src();()内に入れれば、画像を指定して表示できる!そのIDを持った画像のurlを取得するということ!


< テンプレートタグの解説 >

<!POINT!>  get_post_thumbnail_id(); は投稿のアイキャッチ画像がセットされている場合は、そのIDを返す(取ってくる)
<!POINT!>   wp_get_attachment_image_src();  はWordPressのテンプレートタグで、ライブラリに保存した画像のurlを返す(取得する)。() の画像のID番号を入れることで画像を指定できる。

この2つのテンプレートタグを組み合わせると、

get_post_thumbnail_id();   →  ID取得

wp_get_attachment_image_src(); → 指定IDの画像のurlを返す

この組み合わせで、指定IDを持つ、画像のURLを取得できそうですね!


その前に、「$ 」マークが気になります。

< 変数 >

上のコードには、

「$id= 」「$img=」という文字があります。

この「$」マークは、「変数」を作る時に使います。プログラミング感ありますよね〜!

つまり、

「$id = 」 の意味は、「変数名id=」ということ!

$id = get_post_thumbnail_id(); の意味は
変数名idは、get_post_thumbnail_id();です。」

考え方は、少し違って、

get_post_thumbnail_id();を、変数名id に、代入(入れる)する

という風に考えます。

プログラミングにおいて、「=」は、数学の「イコール」と同じような意味ですが、「右辺を左辺に代入する」ことを意味します。

そう考えると、

$id = get_post_thumbnail_id(); の意味は get_post_thumbnail_id();   で IDを取得して、$idに代入(入れる)する 

という意味になります。

結果的にどうなるかというと、(仮にID10とすると)

$id = 10

このような数字に置き換わって、ブラウザ上で認識されます。

<!POINT!> $マークは、変数名の宣言。$○○は○○という変数を作るということ。変数名は、自由に設定できる。
<!POINT!> 「=」は、プログラミングにおいては、「右辺を左辺に代入する」という意味。

同じように、

$img = wp_get_attachment_image_src( $id);

の意味は、

wp_get_attachment_image_src($id); → $id画像のurlを返す
この動きを$imgに入れる(代入する)

ということになります。

わかりやすく考えると、

$img は、$idで指定したIDもつ、画像のurlが入るということ

$img = 'http://wp-content/uploads/2021/08/pexels-andrea-piacquadio-972995-1024x683.jpg '

こんな感じの画像のurlが入ってる状態ということ!


< 変数の組み合わせ >

画像3

$id = get_post_thumbnail_id(); ・・・①
$img = wp_get_attachment_image_src($id); ・・・②

さて、この2つの変数の意味を見ていきましたが、結局を何をしてるねんという話です。こういうこと↓


アイキャッチ画像があれば、そのID番号を $idの中に入れる(代入する)。

(※仮にアイキャッチ画像のIDを10とします!)

$id = 10

と書き変わる。

そうなると、こちらも書き変わる

$img = wp_get_attachment_image_src(10);  ・・・②

そうなると、

wp_get_attachment_image_src(10); ・・・②

このコードが実行される

ライブラリの中の、ID10の画像のURLを取ってくる(返す)

すると、こう書き変わる

$img = 'http://wp-content/uploads/2021/08/pexels-andrea-piacquadio-972995-1024x683.jpg ' ・・・②


< 変数をコードに入れる >

こうして取得できた、画像のURLを背景に指定したいので、

CSSのbackground-imageを使って、書いていきます。

<header class ="header" style="background-image:url('<?php echo $img[0]; ?>') ">

ここでは、<?php echo $img[0];?> というphpがでてきました。

echoは、表示すると覚えておけば良いでしょう!

ここで謎の[0]の文字が!!

これは、配列の0番目を指定しているということです!

意味わかりませんよね〜!!



【 wp_get_attachment_image_src(); 】

画像4

こいつは、( )内で指定したIDを持つ画像のURLを返す

という役割がありましたが、

これにはある決まりがあります。

 wp_get_attachment_image_src(● , ' ▲  ');

この●の箇所には、画像のIDを整数で入れなければなりません。

▲の箇所には、画像のサイズを、thumbnail, medium, large, full の中から選んで、指定できます。指定しない場合は、thumbnail というサイズが自動で設定されます。つまり指定しなくてもOK。空白でもOK。

今回は、●の箇所に必要なIDの整数を$id で取得しましたね。


▲の箇所の画像サイズは指定していませんでした。この画像サイズは

thumbnail, medium, large, full の4種がありますが、

これは、WordPressの管理画面→設定→メディア と進むと、

サムネイルのサイズ、中サイズ、大サイズという項目があり、

そこで入力した幅と高さの数値が反映されます。

この箇所の入力は、' large 'など、シングルクォーテーション( ' )が必要です。


ということで!

先程の、[ 0 ] 問題ですが、

$img = wp_get_attachment_image_src(10);

は、10というIDを指定していて、サイズは指定していないので、

自動で、thumbnailが指定されているわけです。

わかりやすくするため、サイズを指定すると、

$img = wp_get_attachment_image_src(10, 'large' );

こうなります。

ライブラリの中の、ID番号10の画像のURLを取得する。

画像サイズは、largeで!

という意味になります。

この2つの情報は、

配列 として返ってくるということでしたので

0番目の情報:ID10 のURL
1番目の情報:largeのwidth (大サイズの幅の数値)
2番目の情報:largeのheight(大サイズの高さの数値)

このような情報として返ってきます。

返ってくるという表現がわかりにくいんですよね!

このような情報の形に変換されるという感じですね!

つまり、

[ 0 ] 番目の情報 = ID10の画像URL
[ 1 ] 番目の情報 = 画像のwidth
[ 2 ] 番目の情報 = 画像のheight


これでもうわかりましたね!

style="background-image:url('<?php echo $img[0]; ?>') ">

ここで指定している[ 0 ] とは、

[ 0 ] 番目の情報 = ID10の画像URL

というわけです!

なので、ブラウザでは、このように書き換えられています。

style="background-image:url('http://wp-content/uploads/2021/08/pexels-andrea-piacquadio-972995-1024x683.jpg ') ">

これで、背景(background-image)に、画像のurlを指定できました!


【まとめ】

正直、めんどくせぇ!!でしょう。

それなら、変数とか使わずに、直接ID番号をコードに書けばいいやろという話です!

しかし、それでは、WordPressを使う意味がありません。

WordPressは、管理画面の情報と、ホームページの情報がリンクしていて、管理画面での編集が、ホームページにも反映させるわけです。

なので、コードを書けない人も、簡単に編集ができる。

コードにIDを直書きしてる状態では、画像を変更する際に、HTMLやCSSを編集する必要ができてきます。

そして、ブログを投稿するたびに、そのブログの数だけ、画像ファイルのID番号を書き換えていく必要があります。

PHPを使って、変数を使って、コードを書いておけば、ブログ投稿の編集ページで指定した、アイキャッチ画像のIDを取得して、URLとしてコード書き換えてくれました。

そのため、記事数が増えても、管理画面から投稿するだけで、その投稿に応じた、画像を表示してくれます!

これって、結局、最初に書く、面倒くささはありますが、その後の面倒ささはゼロです!

プログラミングとは、面倒くさいことなくして、楽するのが目的!

楽するために、努力するというマインドですね!!

めちゃいい考え方ですよね♪


引き続き、楽するためにがんばりましょう!!








この記事が気に入ったらサポートをしてみませんか?