ミギムキ

[WordPress] チェックボックス形式で保存したカスタムフィールドの内容を表示したい

チェックボックス形式のカスタムフィールドで保存した内容を出力しようとしたときに少し手間取ったので、備忘録としてメモ。

NGなサンプルコード

$checkbox = post_custom('cf_checkbox'); foreach($checkbox as $value) { echo $value; }

「cf_checkbox」という名前のチェックボックス形式のカスタムフィールドを呼び出そうとしたコードです。
配列形式で保存されている内容をforeachで出力しようとしたのですが、何も表示されませんでした。
変数「$checkbox」の内容を確認してみると、以下のようなデータになっていました。

a:10:{i:0;s:7:"checkbox_01";i:1;s:7:"checkbox_02";i:2;s:7:"checkbox_03";i:3;s:7:"checkbox_04";i:4;s:7:"checkbox_05";i:5;s:7:"checkbox_06";i:6;s:7:"checkbox_07";i:7;s:7:"checkbox_08";i:8;s:7:"checkbox_09";i:9;s:7:"checkbox_10";}

これはシリアライズ(直列化)されたデータであり、チェックボックスに限らず、配列情報で管理される値は、データベースに書き込まれる際にシリアライズされるようです。

修正版サンプルコード

$checkbox = unserialize(post_custom('cf_checkbox')); foreach($checkbox as $value) { echo $value; }

「unserialize」という関数を使うことで、シリアライズされたデータを配列形式に戻すことができます。
配列形式になったデータをforeachでループさせると、無事にチェックボックスの内容を出力できました。

ご質問など受け付けています

記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。

ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。