ACF(アドバンスドカスタムフィールド)
ACF(アドバンスドカスタムフィールド)は、ワードプレスをシステムのパーツとして利用しようというものです。
フィールドを設定して、そのフィールドをプログラムで制御し、サイトを動的に表示することができます。
といった単純な縦並びの構造であれば、単にフィールドを追加していけばOKです。
構造は
ポイントは繰り返しフィールドとグループ。それに若干バリエーションを作れる柔軟コンテンツ(有料版のみ)
:
:
といった構造を1ブロックとし、それを何個か追加できるとい構造の場合繰り返しフィールドを使います。
構造は
たとえば、
といった構造を作るときに group(グループ)を使用します。
設定は、
のような構造に加え
といった構造いずれかを選択させられるといった場合に使用します。
一番上の階層のみ get_fileld(‘フィールド名’)
それ以降の階層は、get_sub_field(‘フィールド名’)
ACF(アドバンスドカスタムフィールド)の構造は、カテゴリーの連結構造と同じです。
そのため、第一階層から、その下の子供、孫・・・といった形になり、再起呼出しで連結をたどる場合には、
第一構造の処理を行い、それ以降は再起呼出しという構造を取ります。。ってここんところは説明不要ですね。
いずれにしても一番上のフィールドのみ get_field でその下の子供、孫・・・は get_sub_field と覚えておきます。
ハイライトさせた行に注目です。
ループは、単にフラグを回しているだけで、the_rows を呼び出すことでデータポイントを固定化します。
それで、the_rows 以降 get_sub_field で、その行のデータを読み込めるようになります。
the_rows でデータポイントを固定化しないと get_sub_field でデータを読み込んだ時、何が来るかわかりません。
コピペで構造をつくっていると、たまにコピーし忘れるので注意が必要。
ついでにいっておくと画像フィールドは、get したとき何をもってくるのかフィールドの設定で指定しておかないといけません。デフォルトではデータのIDになっているので、読み込んで img タグの src へ設定しても画像は出てきません。
画像の場合は、画像URLを設定しておくのが無難。
読み込めずに悩む方が多いかも。
でも、レイアウトのgroup(グループ)は、データをエントリーするときに見やすく(といっても対して変わらないけど)する、管理上もまとめるという意味でよく使いたいレイアウトです。
ところが レイアウト group(グループ)に属する子供を読み込むときに get_sub_field で、いきなり読み込もうとしても読み込めません。
読み込む前に 親であるレイアウトをセットしないと読み込めません。
構造が以下の場合、
ポイントは、 has_sub_field 。要するに子供を持っているか?と聞くと見せかけて~の、ポインターセット。
抜け出せたでしょうか?
フィールドを設定して、そのフィールドをプログラムで制御し、サイトを動的に表示することができます。
ACF(アドバンスドカスタムフィールド) インストール
プラグインの新規追加で Advanced Custom Fields を検索し、インストールします。ACF(アドバンスドカスタムフィールド)の使い方概要
ACF(アドバンスドカスタムフィールド)は、フィールド設定、フィールドを使用するプログラム作成作業が発生します。設定できるフィールド
- ■基本
- テキスト
- テキストエリア
- 数値
- Range
- メール
- URL
- パスワード
- ■コンテンツ
- 画像
- ファイル
- Wysiwyg エディタ
- oEmbed
- ギャラリー
- ■選択枝
- Select
- チェックボックス
- ラジオボタン
- Button Group
- 真 / 偽
- ■関連
- Link
- 投稿オブジェクト
- ページリンク
- 関連
- タクソノミー
- ユーザー
- ■JQuery
- Googleマップ
- デイトピッカー
- Date Time Picker
- Time Picker
- カラーピッカー
- ■レイアウト
- メッセージ
- Accordion
- タブ
- Group
- 繰り返しフィールド
- 柔軟コンテンツ
- Clone
ACF(アドバンスドカスタムフィールド)構造作り
テキスト
画像
テキスト
画像
テキスト
といった単純な縦並びの構造であれば、単にフィールドを追加していけばOKです。
構造は
テキスト
画像
テキスト
ポイントは繰り返しフィールドとグループ。それに若干バリエーションを作れる柔軟コンテンツ(有料版のみ)
繰り返しフィールド
テキスト
画像
テキスト
画像
テキスト
テキスト
画像
テキスト
画像
テキスト
:
:
といった構造を1ブロックとし、それを何個か追加できるとい構造の場合繰り返しフィールドを使います。
構造は
繰り返しフィールド
テキスト
画像
テキスト
group(グループ)
構造をひと塊にするものです。たとえば、
タイトル
:
テキスト
画像
テキスト
画像
テキスト
テキスト
画像
テキスト
:画像
テキスト
:
といった構造を作るときに group(グループ)を使用します。
設定は、
group(グループ)
タイトル:テキスト
繰り返しフィールド
テキスト
画像
テキスト
柔軟フィールド
柔軟フィールドは、テキスト
画像
のような構造に加え
画像
テキスト
といった構造いずれかを選択させられるといった場合に使用します。
ACF(アドバンスドフィールドカスタマイズ プログラムでのデータの読み込み
ACF のデータの取り込みは、2種類あります。一番上の階層のみ get_fileld(‘フィールド名’)
それ以降の階層は、get_sub_field(‘フィールド名’)
ACF(アドバンスドカスタムフィールド)の構造は、カテゴリーの連結構造と同じです。
そのため、第一階層から、その下の子供、孫・・・といった形になり、再起呼出しで連結をたどる場合には、
第一構造の処理を行い、それ以降は再起呼出しという構造を取ります。。ってここんところは説明不要ですね。
いずれにしても一番上のフィールドのみ get_field でその下の子供、孫・・・は get_sub_field と覚えておきます。
繰り返しフィールドの読み込み
繰り返しフィールドは、繰り返しライン(row)の存在を確認してからループを回します。if(have_rows('繰り返しフィールドのフィールド名')){
$lcnt=0;
while(have_rows('繰り返しフィールドのフィールド名')){
the_row();
$子どもフィールド = get_sub_field('子どもフィールド名');
}
}
ハイライトさせた行に注目です。
ループは、単にフラグを回しているだけで、the_rows を呼び出すことでデータポイントを固定化します。
それで、the_rows 以降 get_sub_field で、その行のデータを読み込めるようになります。
the_rows でデータポイントを固定化しないと get_sub_field でデータを読み込んだ時、何が来るかわかりません。
コピペで構造をつくっていると、たまにコピーし忘れるので注意が必要。
ついでにいっておくと画像フィールドは、get したとき何をもってくるのかフィールドの設定で指定しておかないといけません。デフォルトではデータのIDになっているので、読み込んで img タグの src へ設定しても画像は出てきません。
画像の場合は、画像URLを設定しておくのが無難。
フィールドグループの レイアウト group(グループ) の読み込み、呼び出し
以外に情報が少ないのは、レイアウトグループの group(グループ)。読み込めずに悩む方が多いかも。
でも、レイアウトのgroup(グループ)は、データをエントリーするときに見やすく(といっても対して変わらないけど)する、管理上もまとめるという意味でよく使いたいレイアウトです。
ところが レイアウト group(グループ)に属する子供を読み込むときに get_sub_field で、いきなり読み込もうとしても読み込めません。
読み込む前に 親であるレイアウトをセットしないと読み込めません。
構造が以下の場合、
group(グループ):フィールド名=papa
タイトル:テキスト:フィールド名=papatext
繰り返しフィールド
テキスト:フィールド名=childtext
画像:フィールド名=childpict
has_sub_field('papa');
$papatext = get_sub_field('papatext');
while(have_rows('currScd')){
the_row();
$childtext= get_sub_field('childtext');
$childpict= get_sub_field('childpict');
:
}
ポイントは、 has_sub_field 。要するに子供を持っているか?と聞くと見せかけて~の、ポインターセット。
抜け出せたでしょうか?