Calculated fields for ACF

Calculated fields for ACF

URL

https://www.wundermatics.com/

評価

4

有料/無料

Array

日本製/海外製

false

作者

wundermatics

説明

高度なカスタムフィールドに数式フィールドを追加し、フィールド値に基づいて簡単な計算を実行できるようにします。
計算結果は、バックエンドの投稿エディターとフロントエンドのフォームで投稿を編集しているときに、Ajax経由で動的に更新されます。

要件
計算フィールドを使用するには、Advanced Custom Fields 5.0 以降が必要です。
Pro 版と標準版の両方でご利用いただけます。

フロントエンドフォーム
バージョン 1.2.3 以降、ACF の計算フィールドは、acf_form() 関数(Advanced Custom Fields に組み込まれています)を使用して作成されたフロントエンドフォームをサポートします。

数式
計算フィールドにより、ACF フィールドエディターに新しい設定「数式」が追加されました。
数式では、フィールド名を使用して同じフィールドグループ内の他のフィールドを参照できます。
繰り返しフィールド内のサブフィールドに数式を追加した場合、その名前は同じ繰り返しフィールド内の別のサブフィールドを参照します。
繰り返しフィールド内のサブフィールドは、「parent.」というプレフィックスを使用して親フィールドを参照することもできます。

数式には、加算 (+)、減算 (-)、乗算 (*)、除算 (/)、累乗 (^) などの基本的な数学演算を含めることができます。
また、sin、cos、arcsin、log、ln、sqrt、abs などの関数も含めることができます。括弧もサポートされています。
無効な構文または未定義のフィールド名を参照しているために式を評価できない場合は、何も表示されずにゼロが返されます。

有効な式の例(先頭に等号がないことに注意してください)

  • fieldA * 2
  • fieldA * fieldB
  • abs(fieldA) * (2 + sqrt(fieldB))
  • amount * parent.price

 

条件演算子
式には、0 または 1 を返す条件式を含めることもできます。サポートされている演算子は次のとおりです。

  • 等しい (==) – 2 つの値が等しい場合は 1、そうでない場合は 0 を返します。
  • 等しくない (!=) – 2 つの値が等しくない場合は 1、そうでない場合は 0 を返します。
  • より大きい (>) – 1 番目のオペランドが 2 番目のオペランドより大きい場合は 1、そうでない場合は 0 を返します。
  • 以上 (>=) – 1 番目のオペランドが 2 番目のオペランドより大きいか等しい場合は 1、そうでない場合は 0 を返します。
  • より小さい (<) – 1 番目のオペランドが 2 番目のオペランドより小さい場合は 1、そうでない場合は 0 を返します。
  • 以下 (&lt;=) – 1 番目のオペランドが 2 番目のオペランドより小さいか等しい場合は 1、そうでない場合は 0 を返します。

 

条件演算子を使用した有効な式の例:

  • 10 == 10 (1 を返します)
  • 10 == 2 (0 を返します)
  • 10 > 2 (1 を返します)
  • 10 < 2 (0 を返します)
  • 10 <= 10 (1 を返します)

 

丸め関数
小数値を最も近い整数に丸めます。サポートされている関数は次のとおりです。

  • round() – 標準的な数学的丸め規則を使用して、最も近い整数に丸めます
  • ceil() – 値を次に大きい整数に丸めます
  • floor() – 値を次に小さい整数に丸めます

 

丸め関数を使用した有効な式の例

  • round(10.2) (10 を返します)
  • round(10.9) (11 を返します)
  • round(10.888888 * 10) / 10 (10.9 を返します)
  • ceil(10.2) (11 を返します)
  • floor(10.2) (10 を返します)

round() 関数は引数を1つだけ取り、常に整数に丸めることに注意してください。
より高い精度に丸める必要がある場合は、上記の3番目の例のように乗算と除算を行ってください。

グループフィールド(1.2.4 からの新機能)
グループの一部として定義されたフィールド(サブフィールド)は、グループ名をプレフィックスとして使用できます。
グループ内では、親レベルで定義されたフィールドは「parent」プレフィックスを使用して指定できます。

以下の例をご覧ください。

グループ「group2」内で定義されたフィールド「foobar」の値を使用する有効な式
* group2.foobar + 10
グループ内のフィールドで有効な式(親に count というフィールドがあると仮定)
* parent.count * 22

繰り返しフィールドの配列関数
繰り返しフィールドを使用する場合、親フィールドグループ内の計算フィールドは、集計関数(sum、count、average、min、max)を使用して、特定の繰り返しサブフィールドを集計できます。
例えば、「Sum(orderlines.amount)」という式は、繰り返しフィールド「orderlines」内のすべての「amount」フィールドの合計を返します。

利用可能な配列関数は次のとおりです

  • sum()
  • average()
  • count()
  • min()
  • max()

 

集計式内のドット(.)の後の部分は、それ自体が式であることに注意してください。
「Sum(orderlines.price * amount)」のような数式を記述しても問題ありません。
この式は、「orderlines」繰り返しフィールド内のすべての行を対象に、「price * amount」という計算を実行し、すべての行の合計を返します。

集計関数を使用する場合は、括弧は使用できません。
より複雑な計算を集計する必要がある場合は、繰り返しグループにフィールドを追加し、その追加フィールドに対して集計関数を実行する必要があります。

データ型と計算順序
計算フィールドは、ACFエディタですべてのフィールドが数値として定義されていることを前提として動作します。
数式でテキストフィールドを使用すると、予期しない結果が生成されます。

カスタムフィールドがデータベースに保存される際に計算が行われます。
パフォーマンスへの影響を最小限に抑えるため、計算フィールドはフィールドの順序に依存します。
数式フィールドは、自身よりも前に順序付けされたフィールドのみを参照できます。
自身よりも後に順序付けされたフィールドを参照する数式フィールドは、予期しない結果を生成します。

特徴

「Calculated Fields for ACF」は、Advanced Custom Fields (ACF) プラグインのフィールドタイプを拡張するプラグインで、他のACFフィールドの値に基づいて自動的に計算された値を表示するフィールドを追加する機能を提供します。

  • ACFのフィールドタイプに「Calculated」という新しいフィールドタイプが追加されます。
  • この「Calculated」フィールドでは、他のACFフィールドの値を参照して、四則演算(+, -, *, /)や比較演算子、条件分岐などを含む数式を設定できます。
  • テキスト、数値、選択肢など、様々なACFフィールドの値を計算に利用できます。
  • 管理画面上で計算結果をプレビューできるため、設定の確認が容易です。
  • 関連するACFフィールドの値が変更されると、自動的に計算結果が更新されます。
  • JavaScriptのような構文で、複雑な計算ロジックを記述できます。
  • ACF Proのリピーターフィールドやフレキシブルコンテンツフィールド内のフィールドも計算に利用できます。
  • PHPで独自の計算関数を作成し、それを数式内で呼び出すことができます。

関連記事