拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
記事内のカスタムフィールドの画像をランダムに選んで出力する
MTQに以下のような質問があがっていました。
記事入力のカスタムフィールドで4枚画像を登録し、一覧ページに記事の1枚目の画像と4枚目の画像をすべての記事のそれぞれの画像からランダムで計12枚出力させたいのですが可能でしょうか?
この質問に答えます。
1.考え方
ご質問のようなことを行うには、以下のように処理することが考えられます。
- 全記事からランダムに12件の記事を読み込み、順に出力する
- 個々の記事を出力する際に、0か1の乱数を発生させ、0なら1件目の画像を出力し、1なら4件目の画像を出力する
記事をランダムに読み込むことについては、すでにMTQで安倍さんから回答があり、RandomEntriesというプラグインを使えば解決できます。
また、乱数を発生させることは、拙作のVarExpandというプラグインで行うことができます。
2.テンプレートの例
上記2つのプラグインをインストールした上で、テンプレートを以下のように組めば、希望の動作になると思います。
<mt:Entries random="1" limit="12">
<$mt:SetVarFormula name="rnd" formula="int(rand()*2)"$>
<mt:If name="rnd" eq="0">
1件目の画像を出力する処理
<mt:Else>
4件目の画像を出力する処理
</mt:If>
</mt:Entries>
