「何とかする」ってザックリとしたタイトルで、すいません。
…いやいや、説明がなかなか難しいんですよ。具体的に書いた方が分かりやすいので、そうします。
例えば、とある介護施設で社員募集のページを作ったとします。
募集する職種は、介護士・看護師・作業療法士・ケアマネージャー・事務職など、いくつかあります。
で、関連施設も10箇所程あり、それぞれの施設で募集している職種が違っていて、介護士はA施設とB施設で募集しているけど、看護師はA施設とC施設で募集している…というようなケースだとします。
この職種はどこの施設で募集しているのかを簡単に表示できるように、チェックを入れたら募集している施設が出てくる様な仕組みはできないものか?という相談を受けました。
…と、ここまで分かりましたかね?えっ分からない?
まあ、自分のための備忘録なので、分かる人だけ分かって下さい。もぉーし分けございません(←ホテルの高嶋政伸風:懐かしい!)。
すっかり前置きが長くなりましたが、姉さん事件です!ウソです。
…真面目にやりますね。
今回は Advanced Custom Fields を使い、チェックを入れたらある項目を表示するような仕組みを作ります。
使用環境
Advanced Custom Fields を使ってカスタムフィールドを追加します。
カスタムフィールドって何???って人は、自分で調べてくださいね。お願いします。
- Advanced Custom Fieldsの使い方 | KOTORI Blog
- 私が愛してやまない、Advanced Custom Fields の使い方を詳細解説[ 出力編 ] | MAO PC エンジニア
*↑ KOTORI BlogさんとMAO PC エンジニアさんの記事を参考にさせていただきました。
まず、フィールドグループを作ります。
続いて、フィールドグループ「施設選択」の中にフィールドを作っていきます。
チェックボックスって真/偽を判別するような機能ですよね。
なので、「真/偽」のフィールドタイプを作ってチェックボックス準備します。
で、今作った「チェック01:太陽の丘」が「真」になった際に、「Wysiwyg エディタ」が表示されるようにフィールドを作ります。
フィールドタイプを「Wysiwyg エディタ」にして、
チェックが入ったら項目を表示したいので、必須は「はい」、
条件判定も「はい」にして、「チェック01:太陽の丘」が「チェックされています」と「等しい」場合とします。
これでカスタムフィールドの仕組みができました。
今度は、テーマファイルの編集です。
今回使っているテーマ「enfold」でのコードを書きますので、他のテーマの場合は、適宜変更してください。
footer.phpの<div id=’btmNavi’>の直前に
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
<?php echo '<div id="customAreaWrap" class="main_color container_wrap fullsize"> <div class="container"> <div class="customArea clearfix">'; // 01 if( get_field('check01') ) { //真の場合の処理 echo '<div class="shisetu">'; the_field("shisetsu01", $post->ID); echo '</div>'; } else { //偽の場合の処理 } // 02 if( get_field('check02') ) { //真の場合の処理 echo '<div class="shisetu">'; the_field("shisetsu02", $post->ID); echo '</div>'; } else { //偽の場合の処理 } // 03 if( get_field('check03') ) { //真の場合の処理 echo '<div class="shisetu">'; the_field("shisetsu03", $post->ID); echo '</div>'; } else { //偽の場合の処理 } <!-- 中略 --> // 13 if( get_field('check13') ) { //真の場合の処理 echo '<div class="shisetu">'; the_field("shisetsu13", $post->ID); echo '</div>'; } else { //偽の場合の処理 } // 14 if( get_field('check14') ) { //真の場合の処理 echo '<div class="shisetu">'; the_field("shisetsu14", $post->ID); echo '</div>'; } else { //偽の場合の処理 } // 該当施設がない場合 if( !get_field('check01') && !get_field('check02') && !get_field('check03') && !get_field('check04') && !get_field('check05') && !get_field('check06') && !get_field('check07') && !get_field('check08') && !get_field('check09') && !get_field('check10') && !get_field('check11') && !get_field('check12') && !get_field('check13') && !get_field('check14') ) { echo '<div class="noshisetu"><p>現在、該当する施設はございません。</p></div>'; } echo '</div></div></div>'; ?> |
と記述します。
これで実際のページにカスタムフィールドに入力した内容が表示されるようになりました。
諸々の仕組みが整ったので、固定ページを編集していきます。
Advanced Custom Fields で作ったチェックボックスが並んでいるので、必要な物にチェックを入れます。
チェックを入れた項目に対して、「Wysiwyg エディタ」が表示されるので、表示したい内容を入れます。
ただ、一回一回入れるのも大変なので、テンプレートとか用意するといいかもしれませんね。
以前は「Global Content Blocks」という便利なプラグインがあったんだけどなぁ。
いつの間にかなくなっちゃいました。残念 無念 知念里奈!