Sponsored Link
カスタムフィールド系のプラグインでは超有名な「Advanced Custom Fields」の繰り返しフィールドを使えば簡単に任意のリストなどを作ることができます。
Sponsored Link
今回は子フィールドの値を一つ一つではなく、連結して表示させる方法のご紹介。
繰り返しフィールドの出力はif文を使ったものが主流だと思いますが、今回はforeachでループさせ、文字列に追加して変数に代入し、最終的に表示させる感じになります。
条件として・・・
- 取得するのは繰り返しフィールドの内容で、今回はメールアドレスに指定。
- 特定の固定ページのカスタムフィールドを取得する。
- 繰り返しフィールドの親フィールドは「BCC宛先」、子フィールドは「メールアドレス」。
- 二つ目以降の子フィールドには「,(カンマ)」が先頭に入るようにする。
があります。
PHP
<?php
$rows = get_field('BCC宛先', 固定ページID);// 親フィールド「BCC宛先」を取得
if ( $rows ) { // 「BCC宛先」の子フィールドに入力がある場合
$bcc_count = 0; // ループ回数の初期値
$bcc_address = ''; // 文字列を結合するために変数を用意
foreach ( $rows as $row ) { // ループ
if ( $bcc_count > 0 ) { // ループ回数が0回を上回った場合
$bcc_address .= ',' . $row['メールアドレス']; // $bcc_addressにカンマ付きで子フィールドを連結
} else { // ループ回数が0回を上回っていない場合(1回目)
$bcc_address .= $row['メールアドレス']; // 空の状態の$bcc_addressに子フィールドを連結
}
$bcc_count++; // ループ回数に1ずつ足す
} // endforeach
$bcc = $bcc_address; // 最終的に$bcc_addressを$bccに代入
} else { //「BCC宛先」の子フィールドに入力がない場合
$bcc = ''; // $bccを空に
}
?>
例えば繰り返しフィールドに「aaa@aaa.com」「bbb@bbb.jp」「ccc@ccc.co.jp」などと入力した場合の表示結果を出力するには以下のように記述します。
表示・取得
<?php
echo $bcc; // aaa@aaa.com,bbb@bbb.jp,ccc@ccc.co.jp
?>
テーマ内ならわざわざこんなことをしなくても、繰り返しフィールドのループの出力結果でカンマを出力してあげればいいんですが、今回はテーマ外のPHPファイルであること、変数に代入しなければいけないことがポイントだったので、こういった記述になっています。
一般的には利用するシーンがそんなにないかもしれませんが、僕はおそらくヘビーに使うことになるので備忘録程度に。