【WordPress】implodeで連結した配列要素の区切り文字(連結文字)を指定する

※当ブログのリンクには一部広告が含まれています。

タイトルだけを見ると「どうWordPressに活かすの?」という感じですが、例えば投稿画面でカスタムフィールドのチェックボックスを複数選択してその値を出力する際、その出力された値を任意の文字で区切りたい場合などに使えます。

「赤 青 黄」と文字を出力するとして、「赤,青,黄」「赤/青/黄」というように、区切りをカンマやスラッシュなど任意の文字で区切ることができます。

【この記事を書いた人】

Adobe使用歴20年以上、Webデザイナー歴15年以上、フリーランス歴10年以上のApple/運動好きな2児の母。Apple/クリエイティブ/運動/ライフスタイル関係の情報を発信中。プロフィール詳細

phpのimplodeについて

phpの「implode」は、配列要素を連結文字で繋ぎ、ひとつの文字列で返す関数です。

string implode ( string $glue , array $pieces )
string implode ( array $pieces )

パラメーター

glue
デフォルトは空で、連結したい配列要素の間に入る文字列を指定します。
pieces
連結したい文字列の配列です。

因みに、stringは「文字列」、arrayは「配列」という意味ですので、それ以外のものを入力しても思い通りの出力結果は得られません。

implodeの例

<?php
  $array = array('ケーキ', 'チョコ', 'アイス');
  $array_sweets = implode(",", $array);
  echo $array_sweets; // ケーキ,チョコ,アイス
?>

Advanced Custom Fieldsによるカスタムフィールドの例

Advanced Custom Fieldsによるカスタムフィールドの出力 [チェックボックス・ラジオボタン編]でも説明しましたが、チェックボックスは複数選択が可能なので、選択された値は配列で返ってきます。

Advanced Custom Fields(以下ACF)でフィールド内容を出力する際によく使うのが、the_field()get_field()という2つの関数です。値の内容を表示させたい時はthe_field()を、値の内容を配列で取得したい時はget_field()を使います。

例えば、投稿画面で下記のようなカスタムフィールドのチェックボックスがあるとします。

※カスタムフィールド名:sweets

□ケーキ □チョコ □アイス □クッキー

ケーキとチョコとアイスにチェックを入れると、
the_field()では「ケーキ,チョコ,アイス」と表示され、
get_field()では下記のように配列で帰ってきます。

Array
(
    [0] => ケーキ
    [1] => チョコ
    [2] => アイス
)

「implode」は配列要素を文字列で返す関数なので、今回はget_field()を使って、配列要素をスラッシュ( / )で繋いで表示させたいと思います。

<?php
  $array_sweets = get_field('sweets'); //カスタムフィールドsweetsの配列値を取得
  echo implode(' / ', $sweets_array); 
?>

出力結果

ケーキ / チョコ / アイス

「implode(‘ / ‘, $sweets_array)」の「’ / ‘」部分で連結文字を指定します。他にも、

ケーキ ・ チョコ ・ アイス
ケーキ – チョコ – アイス
ケーキ|チョコ|アイス

など、色々な文字で連結できますね。

今回はACFの配列を返す関数を使用して連結文字を指定しましたが、WPでは配列を返す関数はたくさんありますので、様々な場面で「implode」が使えそうです。
※foreachなどのループでも表示できると思いますが、phpの勉強も兼ねてimplodeを使ってみました。