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

 2016.11.24  2017.08.14

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

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を使ってみました。

Pocket