WordPress Tips
画像をランダムに切り替える
CMSには拡張で記事内や広告の画像を時間で切り替えるものは結構見つかります。
うちのブログサイトではWordpressを利用していますが、テンプレートの一部の背景画像を一定時間でランダムに切り替えたくなりました。まあ、当然そんな機能は備わっていませんし、拡張にも見つかりません。
試してみたら意外と簡単に実現できました。cronとawkを利用しました。切り替えたい画像を用意し、そのリストをテキストファイルで作成、そのテキストをコピー元としてランダムに選択して、ターゲットの画像に上書きしてやれば良いんです。
1.最初に切り替えたい画像をいくつか用意します。あらかじめターゲットの形式やデザイン的にあうかどうかも確認しておきましょう。今回は、ターゲットと同じディレクトリに入れました。
2.コピー元の一覧をテキストファイルで作成します。手で打っても良いですが、"ls *.png > hoge.txt"とか打ち込んで、hoge.txtをエディターを利用していらないファイル名を消した方が確実ですね。
3.awkのプログラムを用意します。こんな感じです。
#! /usr/local/bin/awk -f
BEGIN {
srand();
i = 0;
}
// {
buff[i] = $0
i = i + 1;
}
END {
dirname = "/home/hiro/nanntara/wp-content/themes/oratheme/image/target/";
print "cp",dirname buff[int(rand()*i)],dirname "showcase-bg.png";
}
dirnameにターゲットとこのプログラムを入れるディレクトリをフルパスで書きます。
4.テストしましょう。サーバー機でSSHを利用できなくても、ローカルでテストしておきましょうね。このプログラムの名前はhoge.awkにしておきます。
awk -f hoge.awk hoge.txt
これでコピーコマンドが端末上に表示されることでしょう。実際に実行させるには:
awk -f hoge.awk hoge.txt | sh
とシェルに流し込みます。
5.テストが終わり、一応動くことが確認できたら、サーバー機にアップしましょう。今回は置き換えるターゲット画像があるディレクトリに置き換えもと画像とプログラムをまとめて置いておきました。
6.サーバーでcronの設定です。cPanel利用できるならば、簡単ですね。どの程度の頻度で起動するかを指定しまして、実行するコマンドを書いておきます。私の利用しているSharkspaceでは5分間間隔以上に設定となっています。5分ごとじゃせわしないので、15分にしました。設定するコマンドは:
awk -f /home/....(フルパス).../hoge.awk /home/...(フルパス).../hoge.txt | sh
のように、プログラムとリストはフルパスで指定します。
まあ、私の場合はこれで簡単に実現できました。
今回は時間でしたが、日時指定でクリスマスの時だけ特別版にするなんてこともできるわけです。
| 画像を順番に切り替える< 前 | 次 >Wordpressの翻訳 |
|---|
| < 前 | 次 > |
|---|