- 公開日
- 更新日
カスタムフィールドが連番の時に処理を繰り返す
こんにちは、クロコロールの熊田です。
WordPressでカスタムフィールドを利用する場合、下記のように連番のカスタムフィールドを連続して処理したいことがあるかと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<ul> <?php if ( get_field( 'field1' ) { ?> <li><?php the_field( 'field1' ); ?></li> <?php } if ( get_field( 'field2' ) { ?> <li><?php the_field( 'field2' ); ?></li> <?php } if ( get_field( 'field3' ) { ?> <li><?php the_field( 'field3' ); ?></li> <?php } if ( get_field( 'field4' ) { ?> <li><?php the_field( 'field4' ); ?></li> <?php } if ( get_field( 'field5' ) { ?> <li><?php the_field( 'field5' ); ?></li> <?php } if ( get_field( 'field6' ) { ?> <li><?php the_field( 'field6' ); ?></li> <?php } if ( get_field( 'field7' ) { ?> <li><?php the_field( 'field7' ); ?></li> <?php } if ( get_field( 'field8' ) { ?> <li><?php the_field( 'field8' ); ?></li> <?php } ?> </ul> |
…長い!
実際の案件だとliタグの中身が複数行に渡っていてさらにそれがカスタムフィールドの数だけ続いて…となると冗長にも程があります。
さらにliタグの中身が変更になるとカスタムフィールドの数だけ修正作業が必要になります。保守性も悪いです。
というわけでよりシンプルで保守性も高いスマートな書き方を紹介します。
for文を使って繰り返し処理
1 2 3 4 5 6 7 8 9 10 11 12 |
<ul> <?php for ($i=1; $i<=8; $i++) { $field = 'field' . $i; if ( get_field( $field ) ) { ?> <li><?php the_field( $field ); ?></li> <?php } // end if } // end for ?> </ul> |
数字が変わるだけであとは同じ処理ならfor文を使いましょう。
冒頭のコードをfor文を使って書き直したのが以上になります。
これならliタグの中身に変更が生じても修正が一回で済みます。
繰り返しの回数を変更する場合は「$i<=8」の部分を変更するだけです。
ゼロパディングにも対応してみる
例えばfield01からfield10まで繰り返し処理したい…すなわち連番がゼロパディングパターンで処理を繰り返したいこともあるでしょう。
その場合は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<ul> <?php for ($i=1; $i<=10; $i++) { $Num = str_pad( $i, 2, 0, STR_PAD_LEFT ); // 変数$iを2桁ゼロパディング $field = 'field' . $Num; if ( get_field( $field ) ) { ?> <li><?php the_field( $field ); ?></li> <?php } // end if } // end for ?> </ul> |
ポイントは四行目のstr_pad関数です。
str_pad関数は対象文字列を指定の文字で指定の桁数埋めてくれる関数です。
第一引数: 対象文字列
第二引数: 埋める桁数
第三引数: 埋める文字
第四引数: 埋める側。左側を埋める場合STR_PAD_LEFT、右側だとSTR_PAD_RIGHT、両側だとSTR_PAD_BOTH。
返り値は埋めた後の文字列です。
1 |
echo str_pad( 1, 3, 0, STR_PAD_LEFT ); // 001 |
例えばこの場合だと『「1」を「3桁」「左側」に「0」で埋める』ので出力は「001」になります。
まとめ
1. 回数が決まった繰り返し処理はfor文を使おう。
2. 文字埋めはstr_pad関数。
The following two tabs change content below.
熊田 賢太郎
株式会社クロコロールのコーディングを担当。デジタルハリウッドを卒業後、クロコロールに入社。HTML、CSS、JavaScript、Jquery、PHPの言語を使用。現在は、WordPressエンジニアとして、Webサイト制作、既存サイトのカスタマイズやリニューアル、テーマの制作、サイトのWordPress化、カスタム投稿作成、保守などを担当。
最新記事 by 熊田 賢太郎 (全て見る)
- Google Mapのマーカーを好きな画像に変更する。 - 2024年1月15日
- ブラウザ別に適用させるCSSハック - 2023年12月26日
- RSSフィードが読み込めない!原因は… - 2021年11月10日