ACF 柔軟コンテンツの表示方法
最終更新日 - 公開日 2015.01.20
by
WordPress のプラグイン ACF の柔軟コンテンツ(Flexible Content)の表示方法を紹介します。
柔軟コンテンツを使うと、コンテンツを自由に管理できるレイアウト(サブフィールドグループ)を追加することができます。
例えば、写真や動画を交互に入れられるようなオリジナルのページを作りたい時に便利な機能です。
1.柔軟コンテンツとは?
リピーターフィールドと同様にこのフィールドにはサブフィールドが含まれています。
このフィールドにはレイアウトを自由に追加することができますが、追加できるレイアウトを最初に定義する必要があります。
柔軟コンテンツ(Flexible Content)は、ACFの有料機能になります。
2.柔軟コンテンツの設定方法
柔軟コンテンツを設定内容は次の通りです。
- Layouts
レイアウト - リピーターフィールドと同様に、このフィールドにはサブフィールドが含まれています。このフィールドは、レイアウトとして自由に追加することができます。
追加できるレイアウトは、あなたが欲しいと思う内容を事前に定義する必要があります。
- Button Label
ボタンラベル - レイアウトを追加するためのボタンの名称を設定します。
初期設定は “Add Row” です。
- Minimum Layouts
最小レイアウト - レイアウトの最小設定数を指定します。
- Maximum Layouts
最大のレイアウト - レイアウトの最大設定数を指定します。
3.柔軟コンテンツの基本的な表示方法
柔軟コンテンツの基本的な表示方法を紹介します。
次のコードは、レイアウト名1とレイアウト名2というレイアウトを作成した場合、各レイアウトに任意のサブフィールドを設定してある時の表示方法です。
<?php if( have_rows('フィールド名') ): //柔軟コンテンツフィールドの値を持っているかどうかをチェック ?>
<?php while ( have_rows('フィールド名') ) : the_row(); //値のループ ?>
<?php if( get_row_layout() == 'レイアウト名1' ): //レイアウト名1があった場合に出力 ?>
<?php the_sub_field('コンテツフィールド名1'); //柔軟コンテンツ内は'the_sub_field'や'get_sub_field'を使用 ?>
<?php elseif( get_row_layout() == 'レイアウト名2' ): //レイアウト名2があった場合に出力 ?>
<?php the_sub_field('コンテツフィールド名2'); //柔軟コンテンツ内は'the_sub_field'や'get_sub_field'を使用 ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
コメント無しはこちら
<?php if( have_rows('柔軟コンテンツ') ): ?>
<?php while ( have_rows('柔軟コンテンツ') ) : the_row(); ?>
<?php if( get_row_layout() == 'レイアウト1' ): ?>
<?php the_sub_field('フィールド'); ?>
<?php elseif( get_row_layout() == 'レイアウト2' ): ?>
<?php the_sub_field('フィールド'); ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
各フィールド名は、作ったフィールドに合う任意の名前に変更してください。
4.柔軟コンテンツにリピーターを入れ子にする表示方法
柔軟コンテンツとリピーターを入れ子にする場合の表示方法を紹介します。
<?php if( have_rows('フィールド名') ): //柔軟コンテンツフィールドの値を持っているかどうかをチェック ?>
<?php while ( have_rows('フィールド名') ) : the_row(); //値のループ ?>
<?php if( get_row_layout() == 'レイアウト名1' ): ?>
<!— レイアウト名1の出力 -->
<?php elseif( get_row_layout() == 'レイアウト名2' ): ?>
<!— レイアウト名2にリピーターフィールドがあるかの判別 -->
<?php if( have_rows('リピーターフィールド名') ): //リピーターフィールドの値を持っているかどうかをチェック ?>
<?php while ( have_rows('リピーターフィールド名') ) : the_row(); //値のループ ?>
<?php the_sub_field('image'); ?>
<?php endwhile; ?>
<?php endif; ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
リピーターの詳しい表示方法はAdvanced Custom Feld のアドオン Repeater Field の表示方法を御覧ください。
5.柔軟コンテンツに今の柔軟コンテンツを入れ子にする方法
イレギュラーなケースですが、柔軟コンテンツ(A)の中に同じ柔軟コンテンツ(A)を入れ子にしたい場合は、柔軟コンテンツ(A)を配列化(A’)して、その配列を柔軟コンテンツ(A)で読み込む方法をお勧めします。
配列の作り方は「PHP foreachを使って配列を作る方法」を参考にご覧ください。
まとめ
WordPress のプラグイン ACF の柔軟コンテンツ(Flexible Content)の表示方法を紹介しました。
仕組みを理解するのに苦労しますが慣れてしまえば大丈夫! まずはいろいろ試してみましょう。