今回は、ページを開くたびに画像がランダムで表示される設定方法をメモしていきます。
広告画像やバナー、PR記事などいろんな場面でしようできると思いますが、初めて組んだのでスマートな記述ではないと思います。
ご了承ください!
PHPコード
<?php $image = array( '画像1', '画像2', '画像3', ); $count = count($image ); $random = rand(0, $count - 1); echo $image [$random]; ?>
array ( 配列 )は、0,1,2というように番号が振られていきますが、$count($image)では、配列の数を1,2,3と数えるため番号と「1のずれ」が発生します。
そのため、$random の変数(最小値、最大値 )の最大値には-1を入れないといけません。
※$count の変数時に-1 を入れて設定しても構いません。その場合は、$random の変数(最小値、最大値 )のままで大丈夫となります。
使用例
<?php $image = array( '<!-- 画像1 -- > <img src="image01.jpg" alt="画像1">', '<!-- 画像2 -- > <img src="image02.jpg" alt="画像2">', '<!-- 画像3 -- > <img src="image03.jpg" alt="画像3">', ); $count = count($image ); $random = rand(0, $count - 1); echo $image [$random]; ?>
カスタマイザー値からカウントする方法
<?php $image = 0; if( get_the_image_uri01() ){ $advance += 1; } if( get_the_image_uri02() ){ $advance += 1; } if( get_the_image_uri03() ){ $advance += 1; } if( get_the_image_uri04() ){ $advance += 1; } if( get_the_image_uri05() ){ $advance += 1; } $random = rand(0, $image - 1); if ($random == 0 ): <??> <p>画像1が表示されます。</p> <?php elseif ( random == 1 ):?> <p>画像2が表示されます。</p> <?php elseif ( random == 2 ):?> <p>画像3が表示されます。</p> <?php elseif ( random == 3 ):?> <p>画像4が表示されます。</p> <?php elseif ( random == 4 ):?> <p>画像5が表示されます。</p> <?php endif; ?>
先ほどと少し方法が異なりますが、カスタマイザー値を読み取った場合のみ、$image変数に対して+1していく方法で、$random変数の最大値を求めていきます。
また、random の値と同じ場合ごとに記述を行うようにしました。
カスタマイザーで取得する値をそのまま、表示する方法がうまくできなかったため、このような形になりましたが、問題なく使用できています。
余談
PHPコードを書く際にダブルクォーテーションとクォーテーションを入れ間違えしてしまうことが、Wordpressの画面上に致命的なエラーが発生しましたとでることもしばしば…
少しでも、上達できるように頑張っていこうと思います。