WordPress カスタムフィールドと ACF (Advanced Custom Fields)について、議論が巻き起こっているようなので、参加してみます。
まず、Advanced Custom Fields(ACF)について。
Advanced Custom Fields は、WordPress のカスタムフィールドを使い易くするプラグインです。
ACF のメリット
Advanced Custom Fields プラグインにおける コラボレーション(WordCamp Tokyo 2012)にあるように、管理画面が使い易くなります。また、アドオンを追加する仕組みがあり、Advanced Custom Fields プラグインをベースに、自分で独自機能を追加することも容易です。
ACF のデメリット
カスタムフィールドのデータの持ち方、データの表示の仕方が特殊です(不具合ではなく、そういう設計をしている)。
チェックボックスのように、複数の値を持つ事が出来るフィールドでは、複数の値を一つのデータに纏めてデータベースに保存しています(シリアライズ)。繰り返しフィールドのように、データ数が可変のものでも保存できます。しかし一方で、カスタムフィールドで複数の値を持つデータの検索が面倒です。
また、データ取得/出力は、get_field関数、the_field関数を使います。独自関数を使う事でフィールド毎に柔軟に出力形式を変更できるというメリットもありますが、WP標準から外れる、というデメリットがあります。
WordPress を CMS として使う場合
WordPress を CMS として使う場合、どういう実装をする(orプラグインを選定する)か?というのが結構重要になります。WordPress は自由度が高く作られています。カスタムフィールドのデータを検索するのは、元々のデータベース構造上イマイチ(インデックスがはられていない、フィールドはすべてテキスト)ですが、制作者がカスタムフィールドのデータを検索したいと思えばできるようになっています。
シリアライズしないでカスタムフィールドを使う、という場合
「標準のカスタムフィールドで入力する」
「Advanced Custom Fields プラグインの独自アドオンを作り、シリアライズしない保存方法にする」
「Advanced Custom Fields プラグインではなく別のプラグインを採用する」
「自作したメタボックスで入力する」
等、様々な方法が用意されていて、その中から選択できます。もちろん、他の CMS (Drupal や Expression Engine など)を使う、という方法もあります。案件に合った方法を選択し、お客さんに提案して構築できるかどうかが、ウェブ制作者の腕の見せ所でしょう。