get_post_meta()or post_custom()でできると思いますが
get_post_meta()で行う場合
<?php echo get_post_meta( $post->ID, 'esArea', false ); ?>
と記述すると「Array」と表示されてしまい
echoやprintなどは配列そのものを出力しようとすると、このようになります。
※ saito.rukaさん回答を受け、当回答に間違いがありましたので修正しました。
申し訳ないです、カスタムフィールドへ配列を格納した際の挙動について完全に失念していました。
カスタムフィールドに配列を入れた場合のmeta_queryの記述
メタデータに配列を書き込んだ場合シリアライズされて保存される〜正しい結果を取得するためにはvalueにシリアライズ後の値を指定する必要があります。
また、get_post_meta()の第三引数をfalseにしなければなりませんでしたっけ?
と思って調べたら、同じブログに
http://yahss.net/wordpress/1226-array_in_custom_fields/
という記事もありましたね…。
この記事内にある「チェックボックスは配列になる」のように
ここに配列として出てくる値に入っているのがチェックされた項目でしょうか。
一旦、配列の中がどのような情報になっているかをまず知るためにも
var_dump(get_post_meta( $post->ID, 'esArea', false );)
var_dump(get_post_meta( $post->ID, 'esArea', true );)
両方で確認してみられてはいかがでしょうか?
実際に出力される際は、post_customの際に使われてらっしゃるようにforeach
で
行えばよいでしょう。
post_custom()で行う場合
<?php
if( post_custom('esArea') ) {
echo "<ul>\n";
$items = explode("\n" , post_custom('esArea'));
foreach($items as $value){
echo $value ."<br />" ;
}
echo "</ul>\n";
}
?>
$itemsに対してexplodeしているのは何故でしょう?
そのままpost_custom('esArea')を代入しておくだけでいいのでは…?
× 配列の中身が連結されてしまっているので出力がそのようになるのだと思います。
=> シリアライズされた状態なのでそのような出力
追記:フォーラムにこういった質問がありました
カスタムフィールドのチェックボックスの使用(プラグイン不使用)
ここで書いてあるようにunserialize()するとよいと思います。
あと、細かいところですが
ul要素の直下の要素はli要素であるべきですが上記のコードを見るかぎりliが出力されていないので
if( get_post_custom('esArea') ) {
echo "<ul>\n";
$items = unserialize( post_custom('esArea') );
foreach($items as $value){
//$valueにチェックボックスへのチェックが入っているかの判定
//もし判定がtrueなら echo "<li class="ico-2">" . $value . "</li>";
//判定がfalseなら echo "<li>" . $value . "</li>" ;
}
echo "</ul>\n";
}
のようにしておくとよいと思います。(※未検証です)
※こちらで行う場合も前もって$items
の中のデータがどのようになっているか、
予めvar_dump()
等で調べてから行うとよいと思います。