WordPressでカスタムフィールドを使うなら、個人的には”Advanced Custom Field”がおすすめです。
テキストだけじゃなくて、画像、ラジオボタン、チェックボックス、セレクトボックス、色んなタイプで項目を作ることができる上に、カスタムフィールドを使うカテゴリを指定したりなんてこともできるという。素晴らしい!
ずっとテキストしか使ってなかったのだけど、ちょっとやってみたいことがあって、チェックボックスをいじってみました♪
やってみたかったことっていっても大したことじゃないのですが、「記事ごとに背景色を変える」ということをやろうと思ったわけです。
- 投稿画面にカスタムフィールドで「黒背景にする」ための「黒」っていうチェックボックスを作る。
- チェックが入ったら、その記事のArticleタグの中に、”page-black”っていうクラスを追加して、黒背景にする。
早速Advanced Custom Fieldを使ってやってみます。
まずここで登場するのが、
<?php post_class(); ?>
ここで前の記事に書いた大量のクラスを出力してるのね。この部分にオリジナルのクラスを追加したければ、このpost_class();のカッコの中に追加したいクラス名を入れるだけです。カンマで区切って入れれば複数クラスが追加できます。今回は一つしか要りませんが。
<?php if(in_array('黒',get_field('page_color',$post->ID))){ echo "page-black";} ?>
これだけで、チェックを入れたものが出力できた♪
この出力したものを、個別記事のテンプレートに入れてみました。
しかしここで問題が。普段は黒背景にしたくないので、チェックを外し、黒くならないかどうか確認しました。すると、
Warning: in_array() expects parameter 2 to be array, string given in /home/users/1/~~~~~~~~~~~~
おおう!!!
Warning、警告。。。(滝竜介になってる場合ではない)
なんだこれは。。。
調べてみると、チェックボックスが何も入っていないと、配列自体がなくなっちまう模様。
WordPressのフォーラムに同じ症例の記事があったので参考にさせていただく。
<?php $pagecolor = get_field('page_color',$post->ID); if(is_array($pagecolor)&&in_array('黒',$pagecolor)){ $select_black="page-black"; }else{echo ""; } post_class($select_black); ?>
として、できた!!
これで無事、チェックを入れれば黒背景に、チェックを外せば元の白背景にすることができるようになりました☆
必ずどれかにチェックを入れるなら上のでもいいってことなのかな?