[wp]AdvancedCustomFieldsの繰り返し活用

旧版の話なので現行では勝手が違うかもしれない。

これ

Advanced Custom Fields
パワフルでプロ仕様、そして直感的なフィールドで WordPress をカスタマイズ。

特徴を言うと、というかSmartCustomFieldsと比較すると、視覚的に優秀で扱いやすくて標準機能に繰り返しがない。あと、チェックボックスとか一部で特殊な格納方法を取ってるために抽出して条件つけてどうのこうのとかの地味に凝ったことをしようとすると無理があったりする。

繰り返しフィールドについて

無料で使える範囲において、AdvancedCustomFieldsに繰り返しの機能はない。

繰り返しができると何が便利かって、会社概要とかでテーブルで組まれてるアレを、「項目」「内容」を繰り返しフィールドで登録できたら管理がめっちゃ楽になる。

他にあげるなら個人のプロフィールとか、商品の情報とか、スライドショーの画像とリンク先の管理とか、そういった感じのフォーマットに収まったやつと相性がかなりいい。管理画面場でできることが増えるからとても便利。

繰り返しフィールドがなくても実現できるけど、ない場合は枠を全て用意しなきゃいけないから動的な増減に弱い。

SmartCustomFieldsの繰り返しと違って、順序を入れ替えられないっぽいのがめんどい。
マジで見やすさ優先のプラグインだと思ったほうがいい。見やすいと使いやすいから優秀であることは間違いないんだけど。些細なことだけどアホほどめんどくて、カスタムフィールドじゃなくて手打ちでいいじゃんってなりかねないこともある。

繰り返しフィールドの導入

以前は追加パッチ的な感じで、繰り返しフィールドのパックを別途購入してプラグインに適用させることで機能を拡張してた。

現在は買い切りからサブスク体制に変わってしまったのでちょっとめんどくさくなった。でもその方が稼げるだろうし当然かも。

仕様は変わったものの買い切りのデータ差分を現行バージョンで使うことが可能なので、以前から使ってる人は問題なく継続できる。

この記事は旧版の話。現行版の動作は知らないです。

作例

会社概要的なもの

繰り返しフィールド「company」にテキスト「title」「detail」を作った場合。

<table>
    <tbody>
<?php
while(the_repeater_field('company')):
    $title = get_sub_field('title');
    $detail = get_sub_field('detail');
?>
        <tr><th><?php echo $title; ?></th><td><?php echo $detail; ?></td></tr>
<?php endwhile; ?>
    </tbody>
</table>

画像スライダー

繰り返しフィールド「topimg」に画像「pc」「sp」を作る。

<div class="slider">
<?php
while(the_repeater_field('topimg')):
    $imgPC = get_sub_field('pc');
    $imgSP = get_sub_field('sp');
?>
    <div class="slide"><picture><source srcset="<?php echo $imgSP; ?>" media="(max-width:767.98px)"><img src="<?php echo $imgPC; ?>" alt=""></picture></div>
<?php endwhile; ?>
</div>

表示・非表示の管理

出力内容だけじゃなく、表示の可否を真偽で作ってifで噛ませておくと一旦非公開みたいなことができて便利。

真偽「show」にチェックがあった場合出力内容を取得して表示。

<div class="slider">
<?php
while(the_repeater_field('topimg')):
    $show = get_sub_field('show');
    if($show):
        $imgPC = get_sub_field('pc');
        $imgSP = get_sub_field('sp');
?>
    <div class="slide"><picture><source srcset="<?php echo $imgSP; ?>" media="(max-width:767.98px)"><img src="<?php echo $imgPC; ?>" alt=""></picture></div>
<?php endif; endwhile; ?>
</div>

活用シーン

ページの構成が最初から固まってたらいいんだけど、機能ありきで進めない限りは基本的には後追いで導入すればいいと思う。沢山詳細に登録したいとかになってきたらカスタム投稿で作った方がいいじゃんとか、頑張って作ったけど要らなくなったとか、効率のために作ったのにロスったら意味ないじゃない、みたいな。

コメント

タイトルとURLをコピーしました